Github user maoling commented on a diff in the pull request:

    https://github.com/apache/zookeeper/pull/336#discussion_r133865685
  
    --- Diff: 
src/java/main/org/apache/zookeeper/server/quorum/QuorumCnxManager.java ---
    @@ -647,11 +648,10 @@ public void run() {
                             numRetries = 0;
                         }
                     } catch (IOException e) {
    -                    if (shutdown) {
    -                        break;
    -                    }
                         LOG.error("Exception while listening", e);
    -                    numRetries++;
    +                    if (!(e instanceof SocketTimeoutException)) {
    --- End diff --
    
    -  can we reproduce this issue?(haha,49days)? This should never happen 
theoretically.According to 
[KARAF-3325](https://issues.apache.org/jira/browse/KARAF-3325) or 
[tomcat-56684](https://bz.apache.org/bugzilla/show_bug.cgi?id=56684),they also  
didn't find the root-cause,just do like 
[this](https://github.com/apache/karaf/pull/50/commits/0349d582c4899f19ad73ee37c8c688660cbc7354)
 to add some protections against this issue here.
    -  One assumption is SocketServer.accept() use the default infinite value(2 
^ 32 -1=4294967295) without no timeout specified or setSoTimeout(0) 
        > a call to accept() for this ServerSocket will block for only this 
amount of time. If the timeout expires, a java.net.SocketTimeoutException is 
raised, though the ServerSocket is still valid. The option must be enabled 
prior to entering the blocking operation to have effect. The timeout must be > 
0. A timeout of zero is interpreted as an infinite timeout.
    
       so this issuse always happended after 49days 17 
hours(4294967295/1000/60/60/24=49.7days)


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to