On Tue, 1 Jul 2025 09:31:15 GMT, Jaikiran Pai <j...@openjdk.org> wrote:

>> Can I please get a review of this test-only change which addresses an 
>> intermittent failure in `test/jdk/com/sun/net/httpserver/Test12.java`? This 
>> fixes https://bugs.openjdk.org/browse/JDK-8359477.
>> 
>> In the linked JBS issue I've added a comment which explains what causes this 
>> intermittent failure. The issue is a bug/race within the test. There are 2 
>> commits in this PR and only of them is necessary for addressing this issue. 
>> The other one is a general cleanup of the test. I am willing to revert the 
>> general cleanup commit from this test if others feel that it shouldn't be 
>> done in this PR.
>> 
>> The actual fix is this commit 
>> https://github.com/openjdk/jdk/commit/a0f8fc806e1682ef909cb7b4a449be855072fe48
>>  which stops deleting the input files upon test completion. That should be 
>> OK because the jtreg test infrastructure will clean them up from the scratch 
>> directory after the completion of the test run (if the test succeeds). There 
>> are other ways to address this race condition and continue to delete these 
>> files (for example, co-ordinating between the test and the test specific 
>> `FileServerHandler`), but to me it didn't seem worthwhile doing that.
>> 
>> I've run this change around a 1000 times and haven't seen it fail.
>> 
>> P.S: The `test/jdk/com/sun/net/httpserver/Test1.java` does the same things 
>> as this test, but does it sequentially. I'm pretty sure that we should be 
>> able to trigger this intermittent test failure in that test too if I reorder 
>> the `test()` calls in that test to have a fixed length test be the last one 
>> to execute (i.e. `test (true, ...)` instead of the current `test(false, 
>> ...)`).
>
> Jaikiran Pai 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 eight additional 
> commits since the last revision:
> 
>  - use ExecutorService.close() instead of ExecutorService.shutdown() to wait 
> for the server side handlers to complete execution
>  - use try-with-resource in test's FileServerHandler
>  - Revert "8359477: com/sun/net/httpserver/Test12.java appears to have a temp 
> file race"
>    
>    This reverts commit a0f8fc806e1682ef909cb7b4a449be855072fe48.
>  - merge latest master branch changes
>  - minor change to test's log message
>  - add a log message in the test
>  - 8359477: com/sun/net/httpserver/Test12.java appears to have a temp file 
> race
>  - 8359477: general cleanup of the test

test/jdk/com/sun/net/httpserver/Test12.java line 66:

> 64:         Path smallFilePath = createTempFileOfSize(TEMP_FILE_PREFIX, null, 
> 23);
> 65:         Path largeFilePath = createTempFileOfSize(TEMP_FILE_PREFIX, null, 
> 2730088);
> 66:         try (final ExecutorService executor = 
> Executors.newCachedThreadPool()) {

I would not use try-with-resources here: I don't think we should close the 
executor before closing the servers.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/25820#discussion_r2177073217

Reply via email to