You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zg...@apache.org on 2020/05/23 02:51:46 UTC

[hbase] branch branch-2.2 updated: HBASE-23771 [Flakey Tests] Test TestSplitTransactionOnCluster Again

This is an automated email from the ASF dual-hosted git repository.

zghao pushed a commit to branch branch-2.2
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2.2 by this push:
     new 6a6788c  HBASE-23771 [Flakey Tests] Test TestSplitTransactionOnCluster Again
6a6788c is described below

commit 6a6788ce89bb014599018986d53f370acac9ef3e
Author: stack <st...@apache.org>
AuthorDate: Wed Jan 29 22:36:13 2020 -0800

    HBASE-23771 [Flakey Tests] Test TestSplitTransactionOnCluster Again
---
 .../TestSplitTransactionOnCluster.java             | 48 ++++++++++------------
 1 file changed, 22 insertions(+), 26 deletions(-)

diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
index 72b6835..457b1a1 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
@@ -383,29 +383,8 @@ public class TestSplitTransactionOnCluster {
       HRegion daughterRegion = daughters.get(0);
       RegionInfo daughter = daughterRegion.getRegionInfo();
       LOG.info("Daughter we are going to split: " + daughter);
-      // Compact first to ensure we have cleaned up references -- else the split will fail.
-      // May be a compaction going already so compact will return immediately; if so, wait until
-      // compaction completes.
-      daughterRegion.compact(true);
-      HStore store = daughterRegion.getStores().get(0);
-      CompactionProgress progress = store.getCompactionProgress();
-      if (progress != null) {
-        while (progress.getProgressPct() < 1) {
-          LOG.info("Waiting {}", progress);
-          Threads.sleep(1000);
-        }
-      }
-      store.closeAndArchiveCompactedFiles();
-      for (int i = 0; i < 100; i++) {
-        if (!daughterRegion.hasReferences()) {
-          LOG.info("Break -- no references in {}", daughterRegion);
-          break;
-        }
-        Threads.sleep(100);
-      }
+      clearReferences(daughterRegion);
       LOG.info("Finished {} references={}", daughterRegion, daughterRegion.hasReferences());
-      assertFalse("Waiting for reference to be compacted", daughterRegion.hasReferences());
-      LOG.info("Daughter hri before split (has been compacted): " + daughter);
       admin.splitRegionAsync(daughter.getRegionName()).get(2, TimeUnit.MINUTES);
       // Get list of daughters
       daughters = cluster.getRegions(tableName);
@@ -438,6 +417,26 @@ public class TestSplitTransactionOnCluster {
     }
   }
 
+  private void clearReferences(HRegion region) throws IOException {
+    // Presumption.
+    assertEquals(1, region.getStores().size());
+    HStore store = region.getStores().get(0);
+    while (store.hasReferences()) {
+      // Wait on any current compaction to complete first.
+      CompactionProgress progress = store.getCompactionProgress();
+      if (progress != null && progress.getProgressPct() < 1.0f) {
+        while (progress.getProgressPct() < 1.0f) {
+          LOG.info("Waiting, progress={}", progress.getProgressPct());
+          Threads.sleep(1000);
+        }
+      } else {
+        // Run new compaction. Shoudn't be any others running.
+        region.compact(true);
+      }
+      store.closeAndArchiveCompactedFiles();
+    }
+  }
+
   @Test
   public void testSplitShouldNotThrowNPEEvenARegionHasEmptySplitFiles() throws Exception {
     TableName userTableName = TableName.valueOf(name.getMethodName());
@@ -535,8 +534,7 @@ public class TestSplitTransactionOnCluster {
       HMaster master = abortAndWaitForMaster();
       // Now call compact on the daughters and clean up any references.
       for (HRegion daughter : daughters) {
-        daughter.compact(true);
-        daughter.getStores().get(0).closeAndArchiveCompactedFiles();
+        clearReferences(daughter);
         assertFalse(daughter.hasReferences());
       }
       // BUT calling compact on the daughters is not enough. The CatalogJanitor looks
@@ -819,8 +817,6 @@ public class TestSplitTransactionOnCluster {
   /**
    * Ensure single table region is not on same server as the single hbase:meta table
    * region.
-   * @param admin
-   * @param hri
    * @return Index of the server hosting the single table region
    * @throws UnknownRegionException
    * @throws MasterNotRunningException