You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by an...@apache.org on 2019/01/29 15:32:20 UTC

[zookeeper] branch branch-3.5 updated: ZOOKEEPER-3240: Close socket on Learner shutdown to avoid dangling so…

This is an automated email from the ASF dual-hosted git repository.

andor pushed a commit to branch branch-3.5
in repository https://gitbox.apache.org/repos/asf/zookeeper.git


The following commit(s) were added to refs/heads/branch-3.5 by this push:
     new 015f9d6  ZOOKEEPER-3240: Close socket on Learner shutdown to avoid dangling so…
015f9d6 is described below

commit 015f9d662f2638b5ba66f07ac963de9f11d80bfd
Author: Brian Nixon <ni...@fb.com>
AuthorDate: Tue Jan 29 16:31:58 2019 +0100

    ZOOKEEPER-3240: Close socket on Learner shutdown to avoid dangling so…
    
    …cket
    
    Author: Brian Nixon <ni...@fb.com>
    
    Reviewers: hanm@apache.org, andor@apache.org
    
    Closes #767 from enixon/learner-close-socket
    
    (cherry picked from commit de7b87cd69dfd38787270c71f00576f9a235e582)
    Signed-off-by: Andor Molnar <an...@apache.org>
---
 .../java/org/apache/zookeeper/server/quorum/Follower.java     |  6 +-----
 .../main/java/org/apache/zookeeper/server/quorum/Learner.java | 11 +++++++++++
 .../java/org/apache/zookeeper/server/quorum/Observer.java     |  6 +-----
 3 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Follower.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Follower.java
index 6508601..b79f570 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Follower.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Follower.java
@@ -94,11 +94,7 @@ public class Follower extends Learner{
                 }
             } catch (Exception e) {
                 LOG.warn("Exception when following the leader", e);
-                try {
-                    sock.close();
-                } catch (IOException e1) {
-                    e1.printStackTrace();
-                }
+                closeSocket();
     
                 // clear pending revalidations
                 pendingRevalidations.clear();
diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Learner.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Learner.java
index 3b739ac..42c5aa4 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Learner.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Learner.java
@@ -658,6 +658,7 @@ public class Learner {
         self.setZooKeeperServer(null);
         self.closeAllConnections();
         self.adminServer.setZooKeeperServer(null);
+        closeSocket();
         // shutdown previous zookeeper
         if (zk != null) {
             zk.shutdown();
@@ -667,4 +668,14 @@ public class Learner {
     boolean isRunning() {
         return self.isRunning() && zk.isRunning();
     }
+
+    void closeSocket() {
+        try {
+            if (sock != null && !sock.isClosed()) {
+                sock.close();
+            }
+        } catch (IOException e) {
+            LOG.warn("Ignoring error closing connection to leader", e);
+        }
+    }
 }
diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Observer.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Observer.java
index f0f724e..050582d 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Observer.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Observer.java
@@ -79,11 +79,7 @@ public class Observer extends Learner{
                 }
             } catch (Exception e) {
                 LOG.warn("Exception when observing the leader", e);
-                try {
-                    sock.close();
-                } catch (IOException e1) {
-                    e1.printStackTrace();
-                }
+                closeSocket();
 
                 // clear pending revalidations
                 pendingRevalidations.clear();