On Wed, 5 Nov 2025 10:37:53 GMT, Volkan Yazici <[email protected]> wrote:
>> Volkan Yazici has updated the pull request incrementally with one additional >> commit since the last revision: >> >> Cancel timer on 204 > > src/java.net.http/share/classes/jdk/internal/net/http/MultiExchange.java line > 391: > >> 389: // Ensure that the connection is closed or returned to the >> pool >> 390: exch.nullBody(response, throwable); >> 391: }); > > @dfuch, I've introduced this improvement against 204s, which you internally > tipped me, in 480349b672e. Though I could not come up with a way to decently > test this. Any suggestions? That's probably not testable. In case of nullBody() the CF will be immediately completed anyway - so the only thing you'd risk at this point is completing exceptionally a CF that was already completed with no observable result. Cancelling the timer there is "just" bookeeping - making sure we don't keep timers in the queue when they're no longer needed (which is important too - but there'd be no obvious way to test that, short of exposing the timer queue to the test). A whitebox might be able to do that but you'd probably have to add some additional accessors in the product code for testing purposes. FWIW see https://github.com/openjdk/jdk/blob/master/test/jdk/java/net/httpclient/access/java.net.http/jdk/internal/net/http/Http3ConnectionAccess.java and the place where it's used: https://github.com/openjdk/jdk/blob/3e3822ad7eadbb3d86a3b94a6bd858f8c8ef9364/test/jdk/java/net/httpclient/http3/H3HeaderSizeLimitTest.java#L120 You might be able to add a couple package-level accessors methods to `HttpClientImpl` to get at the information you need and add your own accessor class (similar to Http3ConnectionAccess.java) in the access library, and then use that within your test. If you do so please add a // comment to explain that the new methods are used by tests. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/27469#discussion_r2494207904
