[ https://issues.apache.org/jira/browse/ZOOKEEPER-2366?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15179382#comment-15179382 ]
Hadoop QA commented on ZOOKEEPER-2366: -------------------------------------- -1 overall. Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12791407/ZOOKEEPER-2366.patch against trunk revision 1733525. +1 @author. The patch does not contain any @author tags. +1 tests included. The patch appears to include 11 new or modified tests. +1 javadoc. The javadoc tool did not generate any warning messages. +1 javac. The applied patch does not increase the total number of javac compiler warnings. -1 findbugs. The patch appears to introduce 1 new Findbugs (version 2.0.3) warnings. +1 release audit. The applied patch does not increase the total number of release audit warnings. -1 core tests. The patch failed core unit tests. +1 contrib tests. The patch passed contrib unit tests. Test results: https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/3082//testReport/ Findbugs warnings: https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/3082//artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html Console output: https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/3082//console This message is automatically generated. > Reconfiguration of client port causes a socket leak > --------------------------------------------------- > > Key: ZOOKEEPER-2366 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2366 > Project: ZooKeeper > Issue Type: Bug > Components: quorum > Affects Versions: 3.5.0 > Reporter: Timothy Ward > Assignee: Timothy Ward > Priority: Critical > Fix For: 3.5.2 > > Attachments: ZOOKEEPER-2366.patch, zookeeper.patch > > > The NIOServerCnxnFactory reconfigure method can leak server sockets, and > hence make ports unusable until the JVM restarts: > The first line of the method takes a reference to the current > ServerSocketChannel and then the next line replaces it. The subsequent > interactions with the server socket can fail (for example if the > reconfiguration tries to bind to an in-use port). If they fail *before* the > call to oldSS.close() then oldSS is *never* closed. This holds that port open > forever, and prevents the user from rolling back to the previous port! > The code from reconfigure is shown below: > ServerSocketChannel oldSS = ss; > try { > this.ss = ServerSocketChannel.open(); > ss.socket().setReuseAddress(true); > LOG.info("binding to port " + addr); > ss.socket().bind(addr); > ss.configureBlocking(false); > acceptThread.setReconfiguring(); > oldSS.close(); > acceptThread.wakeupSelector(); > try { > acceptThread.join(); > } catch (InterruptedException e) { > LOG.error("Error joining old acceptThread when > reconfiguring client port " + e.getMessage()); > } > acceptThread = new AcceptThread(ss, addr, selectorThreads); > acceptThread.start(); > } catch(IOException e) { > LOG.error("Error reconfiguring client port to " + addr + " " + > e.getMessage()); > } -- This message was sent by Atlassian JIRA (v6.3.4#6332)