diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index 5714079..db0f667 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -5797,16 +5797,17 @@ public class HRegion implements HeapSize { // , Writable{ } void forceSplit(byte[] sp) { - // NOTE : this HRegion will go away after the forced split is successful - // therefore, no reason to clear this value + // This HRegion will go away after the forced split is successful + // But if a forced split fails, we need to clear forced split. this.splitRequest = true; if (sp != null) { this.explicitSplitPoint = sp; } } - void clearSplit_TESTS_ONLY() { + void clearSplit() { this.splitRequest = false; + this.explicitSplitPoint = null; } /** diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitRequest.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitRequest.java index 4b57a20..e39763d 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitRequest.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitRequest.java @@ -124,6 +124,9 @@ class SplitRequest implements Runnable { io instanceof RemoteException ? ((RemoteException) io).unwrapRemoteException() : io); } } + if (parent.shouldForceSplit()) { + parent.clearSplit(); + } releaseTableLock(); } } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java index bc0c859..9600932 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java @@ -925,7 +925,7 @@ public class TestStore { Assert.assertNull(store.getSplitPoint()); store.getHRegion().forceSplit(null); Assert.assertNull(store.getSplitPoint()); - store.getHRegion().clearSplit_TESTS_ONLY(); + store.getHRegion().clearSplit(); } @Test