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