-
Bug
-
Resolution: Fixed
-
P2
-
6
-
b55
-
x86
-
linux
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2178798 | 6u18 | Alan Bateman | P4 | Resolved | Fixed | b01 |
JDK-2180240 | OpenJDK6 | Alan Bateman | P3 | Resolved | Fixed | b17 |
FULL PRODUCT VERSION :
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Server VM (build 1.6.0_03-b05, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Linux slab 2.6.22-14-generic #1 SMP Tue Feb 12 07:42:25 UTC 2008 i686 GNU/Linux
EXTRA RELEVANT SYSTEM CONFIGURATION :
centrino duo in lenovo 761p running ubuntu
also seen on amazon EC2 nodes running redhat
A DESCRIPTION OF THE PROBLEM :
When using java 1.6 with moderate load, a call to select returns an IOException
with a message "File exists".
The same code runs without a problem on java 1.5
If the exception is ignored, and the select re-called, the code appears to work without problem. However, as the load increases, the rate these exception are generated increases and causes a significant loss of performance.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
I get this issue running the cometd demo with the BayeuxLoadGenerator that is included in the Jetty-6.1.7 release.
The -DIGNORED parameter needs to be passed so that the stack if visible.
Once over 1000 connections are established, this exception happens frequently whenever load is applied.
I am very happy to run tests and provide strace output etc as needed.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
No exception
ACTUAL -
exception thrown
ERROR MESSAGES/STACK TRACES THAT OCCUR :
java.io.IOException: File exists
at sun.nio.ch.EPollArrayWrapper.epollCtl(Native Method)
at sun.nio.ch.EPollArrayWrapper.updateRegistrations(EPollArrayWrapper.java:202)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:183)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
at org.mortbay.io.nio.SelectorManager$SelectSet.doSelect(SelectorManager.java:406)
at org.mortbay.io.nio.SelectorManager.doSelect(SelectorManager.java:166)
at org.mortbay.jetty.nio.SelectChannelConnector.accept(SelectChannelConnector.java:124)
at org.mortbay.jetty.AbstractConnector$Acceptor.run(AbstractConnector.java:515)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
REPRODUCIBILITY :
This bug can be reproduced always.
CUSTOMER SUBMITTED WORKAROUND :
Ignore the exception, however performance is significantly reduced.
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Server VM (build 1.6.0_03-b05, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Linux slab 2.6.22-14-generic #1 SMP Tue Feb 12 07:42:25 UTC 2008 i686 GNU/Linux
EXTRA RELEVANT SYSTEM CONFIGURATION :
centrino duo in lenovo 761p running ubuntu
also seen on amazon EC2 nodes running redhat
A DESCRIPTION OF THE PROBLEM :
When using java 1.6 with moderate load, a call to select returns an IOException
with a message "File exists".
The same code runs without a problem on java 1.5
If the exception is ignored, and the select re-called, the code appears to work without problem. However, as the load increases, the rate these exception are generated increases and causes a significant loss of performance.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
I get this issue running the cometd demo with the BayeuxLoadGenerator that is included in the Jetty-6.1.7 release.
The -DIGNORED parameter needs to be passed so that the stack if visible.
Once over 1000 connections are established, this exception happens frequently whenever load is applied.
I am very happy to run tests and provide strace output etc as needed.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
No exception
ACTUAL -
exception thrown
ERROR MESSAGES/STACK TRACES THAT OCCUR :
java.io.IOException: File exists
at sun.nio.ch.EPollArrayWrapper.epollCtl(Native Method)
at sun.nio.ch.EPollArrayWrapper.updateRegistrations(EPollArrayWrapper.java:202)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:183)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
at org.mortbay.io.nio.SelectorManager$SelectSet.doSelect(SelectorManager.java:406)
at org.mortbay.io.nio.SelectorManager.doSelect(SelectorManager.java:166)
at org.mortbay.jetty.nio.SelectChannelConnector.accept(SelectChannelConnector.java:124)
at org.mortbay.jetty.AbstractConnector$Acceptor.run(AbstractConnector.java:515)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
REPRODUCIBILITY :
This bug can be reproduced always.
CUSTOMER SUBMITTED WORKAROUND :
Ignore the exception, however performance is significantly reduced.
- backported by
-
JDK-2180240 (se) select throws "File exists" IOException under load (lnx)
-
- Resolved
-
-
JDK-2178798 (se) select throws "File exists" IOException under load (lnx)
-
- Resolved
-
- relates to
-
JDK-6897993 (se) Close or cancel performance issue when number of pending updates is high (lnx)
-
- Resolved
-
-
JDK-6670302 (se) NIO selector wakes up with 0 selected keys infinitely [lnx 2.4]
-
- Closed
-