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]
