This is an automated email from the ASF dual-hosted git repository.
wchevreuil pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new f2e2140 Amend HBASE-26187 UTs, adding a check for Split procedure
completion before proceeding with test logic. (#3598)
f2e2140 is described below
commit f2e2140b574123fa871599603cbbba8ba145e1b9
Author: Wellington Ramos Chevreuil <[email protected]>
AuthorDate: Wed Aug 18 15:39:00 2021 +0100
Amend HBASE-26187 UTs, adding a check for Split procedure completion before
proceeding with test logic. (#3598)
Signed-off-by: Duo Zhang <[email protected]>
---
.../regionserver/TestDirectStoreSplitsMerges.java | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDirectStoreSplitsMerges.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDirectStoreSplitsMerges.java
index 16cdebb..bd24f1b 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDirectStoreSplitsMerges.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDirectStoreSplitsMerges.java
@@ -18,6 +18,7 @@
package org.apache.hadoop.hbase.regionserver;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.util.List;
@@ -30,6 +31,8 @@ import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.RegionInfo;
import org.apache.hadoop.hbase.client.RegionInfoBuilder;
import org.apache.hadoop.hbase.client.Table;
+import org.apache.hadoop.hbase.master.assignment.SplitTableRegionProcedure;
+import org.apache.hadoop.hbase.procedure2.Procedure;
import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.apache.hadoop.hbase.testclassification.RegionServerTests;
import org.apache.hadoop.hbase.util.Bytes;
@@ -98,6 +101,7 @@ public class TestDirectStoreSplitsMerges {
TEST_UTIL.createTable(table, FAMILY_NAME);
//splitting the table first
TEST_UTIL.getAdmin().split(table, Bytes.toBytes("002"));
+ waitForSplitProcComplete(1000, 10);
//Add data and flush to create files in the two different regions
putThreeRowsAndFlush(table);
List<HRegion> regions = TEST_UTIL.getHBaseCluster().getRegions(table);
@@ -176,6 +180,7 @@ public class TestDirectStoreSplitsMerges {
TEST_UTIL.createTable(table, FAMILY_NAME);
//splitting the table first
TEST_UTIL.getAdmin().split(table, Bytes.toBytes("002"));
+ waitForSplitProcComplete(1000, 10);
//Add data and flush to create files in the two different regions
putThreeRowsAndFlush(table);
List<HRegion> regions = TEST_UTIL.getHBaseCluster().getRegions(table);
@@ -202,6 +207,22 @@ public class TestDirectStoreSplitsMerges {
mergeRegionFs.commitMergedRegion();
}
+ private void waitForSplitProcComplete(int attempts, int waitTime) throws
Exception {
+ List<Procedure<?>> procedures =
TEST_UTIL.getHBaseCluster().getMaster().getProcedures();
+ if(procedures.size()>0) {
+ Procedure splitProc = procedures.stream().
+ filter(p -> p instanceof SplitTableRegionProcedure).findFirst().get();
+ int count = 0;
+ while ((splitProc.isWaiting() || splitProc.isRunnable()) && count <
attempts) {
+ synchronized (splitProc) {
+ splitProc.wait(waitTime);
+ }
+ count++;
+ }
+ assertTrue(splitProc.isSuccess());
+ }
+ }
+
private void mergeFileFromRegion(HRegionFileSystem regionFS, HRegion
regionToMerge,
HStoreFile file) throws IOException {
Path mergedFile = regionFS.mergeStoreFile(regionToMerge.getRegionInfo(),