[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-1620?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13555763#comment-13555763
 ] 

Jay Shrauner commented on ZOOKEEPER-1620:
-----------------------------------------

Have you tried running the tests in an unmodified branch? I think you are 
encountering this because of changes in your branch, because in the upstream 
branch we don't see the tests fail like this.

That being said, you are right we could do a better job of cleaning up the 
selector. I'd suggest adding a closeSelector() method to the 
AbstractSelectThread

protected void closeSelector() {
  try {
    selector.close();
  catch (IOException e) {
    // Ignore
  }
}

and then adding calls to closeSelector() right before the 
NIOServerCnxnFactory.this.stop() calls in the finally block of the run methods 
for the AcceptThread and SelectorThread.
                
> NIOServerCnxnFactory (new code introduced in ZK-1504) opens selectors but 
> never closes them
> -------------------------------------------------------------------------------------------
>
>                 Key: ZOOKEEPER-1620
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1620
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: server
>    Affects Versions: 3.5.0
>            Reporter: Alexander Shraer
>
> New code (committed in ZK-1504) opens selectors but doesn't close them.
> Specifically AbstractSelectThread in its constructor does 
> this.selector = Selector.open();
> But possibly also elsewhere. Tests fail for me with the following message:
> java.io.IOException: Too many open files
>       at sun.nio.ch.EPollArrayWrapper.epollCreate(Native Method)
>       at sun.nio.ch.EPollArrayWrapper.<init>(EPollArrayWrapper.java:69)
>       at sun.nio.ch.EPollSelectorImpl.<init>(EPollSelectorImpl.java:52)
>       at 
> sun.nio.ch.EPollSelectorProvider.openSelector(EPollSelectorProvider.java:18)
>       at java.nio.channels.Selector.open(Selector.java:209)
>       at 
> org.apache.zookeeper.server.NIOServerCnxnFactory$AbstractSelectThread.<init>(NIOServerCnxnFactory.java:128)
>       at 
> org.apache.zookeeper.server.NIOServerCnxnFactory$AcceptThread.<init>(NIOServerCnxnFactory.java:177)
>       at 
> org.apache.zookeeper.server.NIOServerCnxnFactory.configure(NIOServerCnxnFactory.java:663)
>       at 
> org.apache.zookeeper.server.ServerCnxnFactory.createFactory(ServerCnxnFactory.java:127)
>       at 
> org.apache.zookeeper.server.quorum.QuorumPeer.<init>(QuorumPeer.java:709)
>       at 
> org.apache.zookeeper.test.QuorumBase.startServers(QuorumBase.java:177)
>       at org.apache.zookeeper.test.QuorumBase.setUp(QuorumBase.java:113)
>       at org.apache.zookeeper.test.QuorumBase.setUp(QuorumBase.java:71)
>       at org.apache.zookeeper.test.ReconfigTest.setUp(ReconfigTest.java:56)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to