Review Request : JDK-8002306, (se) Selector.open fails if invoked with thread interrupt status set [win]

David M. Lloyd david.lloyd at redhat.com
Mon Dec 10 14:51:38 PST 2012


On 12/10/2012 04:28 PM, Dan Xu wrote:
> Hi folks,
>
> Please help review the fix for JDK-8002306, Selector.open fails if
> invoked with thread interrupt status set [win], at
> http://cr.openjdk.java.net/~dxu/8002306/webrev/
> <http://cr.openjdk.java.net/%7Edxu/8002306/webrev/>
>
> On windows, we establish loopback socket connections every time  a
> selector is opened. But the connect operation will fail and throw out
> ClosedByInterruptException if its current thread is interrupted. In
> order to open a selector on an interrupted thread successfully, the fix
> clears the interrupt status, establish socket connections, and reset the
> status to interrupt afterwards to work around the restrictions. Thanks!

There will still be a race where the thread interrupt status could be 
set after it was cleared but before the selector is created.

I think there are probably only two viable options here:

1. Treat the current behavior as "correct": you cannot open a selector 
when the current thread is interrupted.
2. Rewrite the selector open operation such that it creates the socket 
without respecting the state of the interrupted flag.

-- 
- DML


More information about the nio-dev mailing list