Bladeren bron

ZOOKEEPER-1109. Zookeeper service is down when SyncRequestProcessor meets any exception. (Laxman via mahadev)

git-svn-id: https://svn.apache.org/repos/asf/zookeeper/trunk@1150903 13f79535-47bb-0310-9956-ffa450edef68
Mahadev Konar 14 jaren geleden
bovenliggende
commit
f08e26fc1d
2 gewijzigde bestanden met toevoegingen van 9 en 1 verwijderingen
  1. 3 0
      CHANGES.txt
  2. 6 1
      src/java/main/org/apache/zookeeper/server/SyncRequestProcessor.java

+ 3 - 0
CHANGES.txt

@@ -256,6 +256,9 @@ BUGFIXES:
   
   ZOOKEEPER-1027. chroot not transparent in zoo_create() (Thijs Terlouw via
   mahadev)
+  
+  ZOOKEEPER-1109. Zookeeper service is down when SyncRequestProcessor meets
+  any exception. (Laxman via mahadev)
 
 IMPROVEMENTS:
   ZOOKEEPER-724. Improve junit test integration - log harness information 

+ 6 - 1
src/java/main/org/apache/zookeeper/server/SyncRequestProcessor.java

@@ -41,6 +41,7 @@ public class SyncRequestProcessor extends Thread implements RequestProcessor {
     private final RequestProcessor nextProcessor;
 
     private Thread snapInProcess = null;
+    volatile private boolean running;
 
     /**
      * Transactions that have been written and are waiting to be flushed to
@@ -62,6 +63,7 @@ public class SyncRequestProcessor extends Thread implements RequestProcessor {
         super("SyncThread:" + zks.getServerId());
         this.zks = zks;
         this.nextProcessor = nextProcessor;
+        running = true;
     }
 
     /**
@@ -147,6 +149,7 @@ public class SyncRequestProcessor extends Thread implements RequestProcessor {
             }
         } catch (Throwable t) {
             LOG.error("Severe unrecoverable error, exiting", t);
+            running = false;
             System.exit(11);
         }
         LOG.info("SyncRequestProcessor exited!");
@@ -170,7 +173,9 @@ public class SyncRequestProcessor extends Thread implements RequestProcessor {
         LOG.info("Shutting down");
         queuedRequests.add(requestOfDeath);
         try {
-            this.join();
+            if(running){
+                this.join();
+            }
         } catch(InterruptedException e) {
             LOG.warn("Interrupted while wating for " + this + " to finish");
         }