[jdk17u-dev] RFR: 8316580: HttpClient with StructuredTaskScope does not close when a task fails [v3]

Alexey Bakhtin abakhtin at openjdk.org
Tue Jul 22 22:29:56 UTC 2025


On Fri, 18 Jul 2025 08:18:48 GMT, Goetz Lindenmaier <goetz at openjdk.org> wrote:

>> I backport this for parity with 17.0.17-oracle.
>> 
>> The change applies clean, but the test does not work out-of-the-box.
>> 
>> It calls some utility methods from ReferenceTracker.java that were added by JDK-8305847.
>> That change is not in the current list of backports, so I added the utility methods 
>> to this change.
>> 
>> Further, the test depends on the fact that in 21 a row of classes implement
>> AutoClosable, which they don't do in 21.
>> I adapted a row of places to work around this. 
>> A try-with-resources statement was easy to replace, as the missing 
>> close() implementation uses public methods, so that I could copy the
>> code to the test.
>> In TestTaskScope I replaced close()  by shutdownNow(). Update: after some
>> research this was further adapted.
>> Finally I removed the "useReferenceTracker=false" test variant, as the
>> HttpClient implementation is quite far off of the implementation in 21,
>> so that the close() method implemented in 21 for Autoclosable can not
>> be easily simulated in the test.
>> 
>> Original test compile error:
>> 
>> test/jdk/java/net/httpclient/HttpGetInCancelledFuture.java:239: error: cannot find symbol
>>             pool.close();
>>                 ^
>>   symbol:   method close()
>>   location: variable pool of type ExecutorService
>> test/jdk/java/net/httpclient/HttpGetInCancelledFuture.java:249: error: incompatible types: try-with-resources not applicable to variable type
>>         try (final var executor = testExecutor()) {
>>                        ^
>>     (ExecutorService cannot be converted to AutoCloseable)
>> test/jdk/java/net/httpclient/HttpGetInCancelledFuture.java:277: error: incompatible types: Tracker cannot be converted to StringBuilder
>>                     System.out.println(TRACKER.diagnose(tracker));
>>                                                         ^
>> test/jdk/java/net/httpclient/HttpGetInCancelledFuture.java:293: error: cannot find symbol
>>                     httpClient.close();
>>                               ^
>>   symbol:   method close()
>>   location: variable httpClient of type HttpClient
>
> Goetz Lindenmaier has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains six additional commits since the last revision:
> 
>  - Call shutdownNow in TestTaskScope.close()
>  - Merge branch 'master' into goetz_backport_8316580
>  - more graceful close() implementation
>  - Adapt test to missing AutoClosable etc.
>  - Parts of 8305847
>  - Backport d8291f593762ab270bf05643b87c57578d716242

Marked as reviewed by abakhtin (Reviewer).

-------------

PR Review: https://git.openjdk.org/jdk17u-dev/pull/3706#pullrequestreview-3045044939


More information about the jdk-updates-dev mailing list