Alan Bateman wrote:
6824477: Selector.select fails with IOException: Invalid argument" if
maximum file descriptors is low
Sherman, you'll probably want to take this - it's another Solaris
specific issue with the /dev/poll based Selector. The Glassfish folks
have been seeing this one intermittently at a few places. In summary,
the maximum number of pollfd structs that can be written to the driver
in a single batch is limited by the maximum number of file descriptors
(the hard limit). The Selector, on the other hand, may attempt to
write up to 10000 updates in a single batch. Where the file descriptor
limit is set to a value less than 10000 then it's possible (under
load, when the interest ops of socket channels are updated many times,
or the select method isn't invoked in a timely manner) that the number
of pending updates exceeds the file descriptor limit causing the
exception in the bug report. This bug has always existed but probably
hasn't been noticed because the default limit is 64k. I've used the
opportunity to eliminate an allocate/free from updateRegistrations.
The webrev is here:
http://cr.openjdk.java.net/~alanb/6824477/webrev.00/
Thanks,
Alan
looks good; approved.
btw, just wonder if the #93-#97 "zero-fill" init code really necessary
(and then those putXYX)?