Review request for 6693490 (original) (raw)

Xueming Shen Xueming.Shen at Sun.COM
Wed Mar 25 22:00:28 UTC 2009


looks good, approved.

Alan Bateman wrote:

6693490: (se) select throws "File exists" IOException under load (lnx) Sherman, we've chatted about this issue so you will probably want to review. It's a race between registration (or re-registration) and close. Registrations are queued so that they come into effect at the next select (as required by the spec) but if the channel is pre-closed just before it is added to epoll then it possible that the socketpair, used in the closing mechanism, gets registered with epoll. Once that happens it creates the conditions to cause a Selector spin, and where the file descriptor is recycled for a new SelectableChannel, then registration will fail with IOException "file exists". The fix is to remove from epoll before the channel is killed and to skip pending updates for closed channels (as these can result in re-registration). To avoid any side effects with cancellation the deregister also purges pending updates for the channel. Thanks to Serge Baranov, Robert Larsen, Peter van Rensburg, Richard Ridgway, Greg Wilkins and others for testing this fix, or preliminary versions of. The webrev is here: http://cr.openjdk.java.net/~alanb/6693490/webrev.00 Thanks, -Alan.



More information about the core-libs-dev mailing list