bneradt commented on PR #13447:
URL: https://github.com/apache/trafficserver/pull/13447#issuecomment-5945142340

   Addressed the blocking requests and the smaller corrections:
   
   - `handle_post_failure()` now preserves the EPIPE already recorded for an 
admitted retry in CONNECTION_CLOSED; that branch only changes the state to 
CONNECTION_ERROR.
   - The continuation test now withholds the final POST byte until the origin 
receives a PING ACK following its split response headers. This reaches OPEN 
without depending on whether ATS immediately forwards early responses. It also 
exercises split trailers, a split inbound request whose response exceeds the 
initial-header timeout, and a conditional 304 ending in empty DATA.
   - The trailer test exposed another missing step: CONTINUATION did not reset 
the original response headers before decoding trailers. It now mirrors HEADERS, 
including requiring END_STREAM. The status lookup also handles both the 
pseudo-header before conversion and status_get() afterwards, and its comment no 
longer blames header polarity.
   - A new half-close test makes ATS send GOAWAY while an origin response 
remains open, verifies another request uses a healthy session, then verifies 
releasing the old stream does not re-pool it. Removing eviction or the 
delete_stream guard independently makes this test fail.
   - The pool test now includes client Connection: close and uses 
header_rewrite to place that field on the first outgoing request at 
SEND_REQUEST_HDR. Later requests wait through the shutdown grace period. Client 
headers alone did not discriminate; with the outgoing field, removing the guard 
changes the connection/stream counts from the required (1, 5) to (5, 8).
   - The 15-instance retry test is now serial. Its origin watches the listener 
while serving a reusable connection and fails explicitly on an unexpected fresh 
connection. The intentional protocol-error scenarios retain their narrowly 
scoped error exceptions; the continuation/payload tests preserve the default 
diags guards with +=. The ACK regex and redundant assertion are corrected.
   - Pool acquisition now returns the global probe's actual result and counts a 
failed thread probe independently. The caller comment covers 
transaction-allocation failures too.
   
   On intent: the body-unavailable latch remains shared by direct and parent 
retry decisions. Once the body cannot be reproduced, switching parents must not 
replay it either. I have documented that parent health handling consequently 
follows the existing non-retryable-request branches. The counter docs now 
explicitly say decisions, potentially more than one per transaction, and 
distinguish admission from issuing or completing a retry.
   
   I agree that outbound error codes lack a useful per-transaction log trace. I 
have not claimed to fix that here; I am leaving it open for the logging 
follow-up discussed on #13783 rather than just storing a value that still has 
no log field.
   
   Validation: build, formatting, 108 selected CTest cases, nine focused AuTest 
files (including all 15 retry scenarios), and the Sphinx docs build pass. 
Mutation checks discriminate OPEN handling, trailer expectation, both 
half-close protections, and the outbound Connection: close guard. The inbound 
timeout and 304 DATA scenarios pass, but I am not claiming they independently 
discriminate removal of timeout cancellation or the status fallback. There is 
no new wire-level errno assertion; the errno correction follows the existing 
upload-failure state and the retry suite passes.
   


-- 
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.

To unsubscribe, e-mail: [email protected]

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

Reply via email to