shinrich opened a new issue #7872:
URL: https://github.com/apache/trafficserver/issues/7872


   Noticed this while walking code trying to see how an assert from @ezelkow1 
could occur.  Looking at the last if/else clause in 
HttpTransact::handle_cache_write_lock
   
   ```
     if (s->cache_info.write_lock_state == CACHE_WL_READ_RETRY) {
       TxnDebug("http_error", "calling hdr_info.server_request.destroy");
       s->hdr_info.server_request.destroy();
       HandleCacheOpenReadHitFreshness(s);
     } else {
       StateMachineAction_t next;
       next = how_to_open_connection(s);
       if (next == SM_ACTION_ORIGIN_SERVER_OPEN || next == 
SM_ACTION_ORIGIN_SERVER_RAW_OPEN) {
         s->next_action = next;
         TRANSACT_RETURN(next, nullptr);
       } else {
         // hehe!
         s->next_action = next;
         ink_assert(s->next_action == SM_ACTION_DNS_LOOKUP);
         return;
       }
       TRANSACT_RETURN(next, nullptr);
     }
   ```
   If the outer else is taken and the next is SM_ACTION_ORIGIN_SERVER_OPEN, 
then TRANSACT_RETURN is called in the if body and also on return through the 
outer else.
   
   Doesn't seem like a good thing.  Appears to be accidental change from PR 
#1794


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to