You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by sy...@apache.org on 2016/06/11 04:56:09 UTC
[23/50] hbase git commit: HBASE-15955 Disable action in
CatalogJanitor#setEnabled should wait for active cleanup scan to finish
(Stephen Yuan Jiang)
HBASE-15955 Disable action in CatalogJanitor#setEnabled should wait for active cleanup scan to finish (Stephen Yuan Jiang)
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/de1b5ff7
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/de1b5ff7
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/de1b5ff7
Branch: refs/heads/hbase-12439
Commit: de1b5ff7761b899691085e147c885e15897a562c
Parents: 21e9827
Author: Stephen Yuan Jiang <sy...@gmail.com>
Authored: Fri Jun 3 15:48:48 2016 -0700
Committer: Stephen Yuan Jiang <sy...@gmail.com>
Committed: Fri Jun 3 15:49:23 2016 -0700
----------------------------------------------------------------------
.../org/apache/hadoop/hbase/master/CatalogJanitor.java | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/de1b5ff7/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
index b9abc65..c93b307 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
@@ -48,6 +48,7 @@ import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.FSUtils;
import org.apache.hadoop.hbase.util.Pair;
import org.apache.hadoop.hbase.util.PairOfSameType;
+import org.apache.hadoop.hbase.util.Threads;
import org.apache.hadoop.hbase.util.Triple;
/**
@@ -86,7 +87,17 @@ public class CatalogJanitor extends ScheduledChore {
* @param enabled
*/
public boolean setEnabled(final boolean enabled) {
- return this.enabled.getAndSet(enabled);
+ boolean alreadyEnabled = this.enabled.getAndSet(enabled);
+ // If disabling is requested on an already enabled chore, we could have an active
+ // scan still going on, callers might not be aware of that and do further action thinkng
+ // that no action would be from this chore. In this case, the right action is to wait for
+ // the active scan to complete before exiting this function.
+ if (!enabled && alreadyEnabled) {
+ while (alreadyRunning.get()) {
+ Threads.sleepWithoutInterrupt(100);
+ }
+ }
+ return alreadyEnabled;
}
boolean getEnabled() {