JDK-7169050 : (se) Selector.select slow on Solaris due to insertion of POLLREMOVE and 0 events
Type:Bug
Component:core-libs
Sub-Component:java.nio
Affected Version:6u23
Priority:P3
Status:Closed
Resolution:Fixed
OS:solaris_nevada
CPU:x86
Submitted:2012-05-15
Updated:2013-04-03
Resolved:2012-06-12
The Version table provides details related to the release that this issue/RFE will be addressed.
Unresolved : Release in which this issue/RFE will be addressed. Resolved: Release in which this issue/RFE has been resolved. Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.
EVALUATION
We need to change the /dev/poll Selector so that:
1. writes the POLLREMOVE the deregister the fd prior to the final close.
2. change the batch update so that it doesn't insert a POLLREMOVE prior to each update. This can be done by either eliminating batching or by ensuring that the update contains at most one update for a file descriptor.
3. When the interest ops are changed to 0 then we should remove the file descriptor from /dev/poll.
We have a prototyped a patch with these changes and this is currently being tested. Results so far are positive. A residual issue that is not addressed in the patches are that a POLLREMOVE will still be written before the final close even if the interest ops are 0 (and thus already deregistrated). This is not an issue with the current /dev/poll driver but would require fixing if the /dev/poll is changed.