You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ns...@apache.org on 2011/10/25 00:30:40 UTC

svn commit: r1188420 - /hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java

Author: nspiegelberg
Date: Mon Oct 24 22:30:40 2011
New Revision: 1188420

URL: http://svn.apache.org/viewvc?rev=1188420&view=rev
Log:
Split log worker should terminate properly when waiting for znode

**** 89 MASTER ONLY ****

Summary: This is an attempt to fix the fact that SplitLogWorker threads were
not being terminated properly in some multi-master unit tests.

Test Plan: Run unit tests, dev cluster testing

Reviewers: pkhemani, kannan
Reviewed By: pkhemani
CC: hbase-eng@lists, pkhemani, mbautin

Differential Revision: 345454
Revert Plan: OK

Modified:
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java?rev=1188420&r1=1188419&r2=1188420&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java Mon Oct 24 22:30:40 2011
@@ -157,7 +157,7 @@ public class SplitLogWorker implements R
       int res;
       // wait for master to create the splitLogZnode
       res = -1;
-      while (res == -1) {
+      while (res == -1 && !exitWorker) {
         try {
           res = watcher.checkExists(watcher.splitLogZNode);
         } catch (KeeperException e) {
@@ -171,13 +171,16 @@ public class SplitLogWorker implements R
             " waiting for master to create one");
             Thread.sleep(1000);
           } catch (InterruptedException e) {
-            LOG.debug("Interrupted while waiting for " + watcher.splitLogZNode);
-            assert exitWorker == true;
+            LOG.debug("Interrupted while waiting for " + watcher.splitLogZNode
+                + (exitWorker ? "" : " (ERROR: exitWorker is not set)"));
+            break;
           }
         }
       }
 
-      taskLoop();
+      if (!exitWorker) {
+        taskLoop();
+      }
     } catch (Throwable t) {
       // only a logical error can cause an exception here. Printing it out
       // to make debugging easier