zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hanm <...@git.apache.org>
Subject [GitHub] zookeeper pull request #700: ZOOKEEPER-1441 - JAVA 11 - Some test cases are ...
Date Tue, 20 Nov 2018 05:17:21 GMT
Github user hanm commented on a diff in the pull request:

    https://github.com/apache/zookeeper/pull/700#discussion_r234871213
  
    --- Diff: zookeeper-server/src/main/java/org/apache/zookeeper/server/NIOServerCnxnFactory.java
---
    @@ -209,6 +209,8 @@ public void run() {
                             LOG.warn("Ignoring unexpected exception", e);
                         }
                     }
    +            } catch (IOException e) {
    +                LOG.error("Exception when running accept thread. Unable to register selector?",
e);
    --- End diff --
    
    If we are binding a port that's already in use here then I think we'll have a problem
because the expectation here is the acceptor thread will always be available unless explicitly
being shut down by caller (for this reason we caught but ignored all checked and unchecked
exception.). The problem is the control flow does not reach higher level from within this
acceptor thread - thus if we have an instantiated but stopped `NIOServerCnxnFactory` due to
acceptor thread exceptions, the entire zk process could end up in a weird state. Previous
code does not have this issue because it tries to bind port early and complain if it can't
such that caller would catch the issue earlier before the acceptor threads started. This should
be easily testable if we spin up a ZK server with an unavailable port with this fix and see
what happens.


---

Mime
View raw message