On Mon, 20 Nov 2023 16:08:10 GMT, Alan Bateman <[email protected]> wrote:

> This is a Windows specific issue where a virtual thread attempting to 
> establish a connection appears to hang, and the test eventually times out. It 
> initially looked like an issue on older releases of Windows but it turns out 
> to be an issue that arises when a SOCKET handle is recycled quickly. Thanks 
> to Daniel Jeliński for spending time to find a way to reproduce this quickly, 
> up to now it was too intermittent and needed tens of thousands of runs to 
> have some chance of reproducing.
> 
> When a SOCKET has been polled, the event is disabled rather than removed from 
> wepoll / AFD poll. When the SOCKET is closed and immediately recycled then 
> there is a race with the close event and registration of the "new" socket for 
> events. The change that we've tested is to remove the event after polling. 
> This is done virtual thread "client" rather than the poller to avoid racing 
> with an async close.
> 
> As part of this change I've removed a temporary change to the Windows Pipe 
> implementation and also remove the connect timeout that went into a few tests 
> to workaround the issue.

This pull request has now been integrated.

Changeset: 21a59b9f
Author:    Alan Bateman <[email protected]>
URL:       
https://git.openjdk.org/jdk/commit/21a59b9f4e46ebd32cff8f1000fe9ad56c918431
Stats:     42 lines in 8 files changed: 9 ins; 11 del; 22 mod

8282726: java/net/vthread/BlockingSocketOps.java timeout/hang intermittently on 
Windows

Reviewed-by: djelinski

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

PR: https://git.openjdk.org/jdk/pull/16742

Reply via email to