You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2019/11/20 17:04:27 UTC

[hbase] branch branch-2 updated (95f25fe -> 7e088da)

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

stack pushed a change to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git.


    from 95f25fe  HBASE-22607. TestExportSnapshotNoCluster fails intermittently
     new a05cef7  Add status when fixing hole
     new 7e088da  HBASE-23321 [hbck2] fixHoles of fixMeta doesn't update in-memory state

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../java/org/apache/hadoop/hbase/master/MetaFixer.java  | 13 +++++++------
 .../org/apache/hadoop/hbase/master/TestMetaFixer.java   | 17 +++++++++++------
 2 files changed, 18 insertions(+), 12 deletions(-)


[hbase] 02/02: HBASE-23321 [hbck2] fixHoles of fixMeta doesn't update in-memory state

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

View the commit online:
https://github.com/apache/hbase/commit/7e088daf39a17079cfaf8dc1a5e68e6bbb4c5a44

commit 7e088daf39a17079cfaf8dc1a5e68e6bbb4c5a44
Author: stack <st...@apache.org>
AuthorDate: Tue Nov 19 12:15:43 2019 -0800

    HBASE-23321 [hbck2] fixHoles of fixMeta doesn't update in-memory state
---
 .../java/org/apache/hadoop/hbase/master/MetaFixer.java  |  6 ++++--
 .../org/apache/hadoop/hbase/master/TestMetaFixer.java   | 17 +++++++++++------
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetaFixer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetaFixer.java
index 5cfa25a..281df1e 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetaFixer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetaFixer.java
@@ -29,7 +29,6 @@ import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.MetaTableAccessor;
 import org.apache.hadoop.hbase.TableName;
-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.exceptions.MergeRegionException;
@@ -99,8 +98,11 @@ class MetaFixer {
       HRegion.createRegionDir(configuration, ri, FSUtils.getRootDir(configuration));
       // If an error here, then we'll have a region in the filesystem but not
       // in hbase:meta (if the below fails). Should be able to rerun the fix.
-      // The second call to createRegionDir will just go through. Idempotent.
+      // Add to hbase:meta and then update in-memory state so it knows of new
+      // Region; addRegionToMeta adds region and adds a state column set to CLOSED.
       MetaTableAccessor.addRegionToMeta(this.masterServices.getConnection(), ri);
+      this.masterServices.getAssignmentManager().getRegionStates().
+          updateRegionState(ri, RegionState.State.CLOSED);
       LOG.info("Fixed hole by adding {} in CLOSED state; region NOT assigned (assign to ONLINE).",
           ri);
     }
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMetaFixer.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMetaFixer.java
index aba00fe..16768a2 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMetaFixer.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMetaFixer.java
@@ -17,6 +17,7 @@
  */
 package org.apache.hadoop.hbase.master;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
@@ -35,7 +36,6 @@ import org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.hbase.util.Threads;
 
 import org.junit.AfterClass;
-import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Rule;
@@ -75,6 +75,7 @@ public class TestMetaFixer {
     TEST_UTIL.createMultiRegionTable(tn, HConstants.CATALOG_FAMILY);
     List<RegionInfo> ris = MetaTableAccessor.getTableRegions(TEST_UTIL.getConnection(), tn);
     MasterServices services = TEST_UTIL.getHBaseCluster().getMaster();
+    int initialSize = services.getAssignmentManager().getRegionStates().getRegionStates().size();
     services.getCatalogJanitor().scan();
     CatalogJanitor.Report report = services.getCatalogJanitor().getLastReport();
     assertTrue(report.isEmpty());
@@ -83,19 +84,23 @@ public class TestMetaFixer {
     deleteRegion(services, ris.get(ris.size() -1));
     deleteRegion(services, ris.get(3));
     deleteRegion(services, ris.get(0));
+    assertEquals(initialSize - 3,
+        services.getAssignmentManager().getRegionStates().getRegionStates().size());
     services.getCatalogJanitor().scan();
     report = services.getCatalogJanitor().getLastReport();
-    Assert.assertEquals(report.toString(), 3, report.getHoles().size());
+    assertEquals(report.toString(), 3, report.getHoles().size());
     MetaFixer fixer = new MetaFixer(services);
     fixer.fixHoles(report);
     services.getCatalogJanitor().scan();
     report = services.getCatalogJanitor().getLastReport();
     assertTrue(report.toString(), report.isEmpty());
+    assertEquals(initialSize,
+        services.getAssignmentManager().getRegionStates().getRegionStates().size());
     // Disable and reenable so the added regions get reassigned.
     TEST_UTIL.getAdmin().disableTable(tn);
     TEST_UTIL.getAdmin().enableTable(tn);
     ris = MetaTableAccessor.getTableRegions(TEST_UTIL.getConnection(), tn);
-    Assert.assertEquals(originalCount, ris.size());
+    assertEquals(originalCount, ris.size());
   }
 
   /**
@@ -121,7 +126,7 @@ public class TestMetaFixer {
     report = services.getCatalogJanitor().getLastReport();
     assertTrue(report.isEmpty());
     ris = MetaTableAccessor.getTableRegions(TEST_UTIL.getConnection(), tn);
-    Assert.assertEquals(0, ris.size());
+    assertEquals(0, ris.size());
   }
 
   private static void makeOverlap(MasterServices services, RegionInfo a, RegionInfo b)
@@ -154,8 +159,8 @@ public class TestMetaFixer {
     Threads.sleep(10000);
     services.getCatalogJanitor().scan();
     report = services.getCatalogJanitor().getLastReport();
-    Assert.assertEquals(6, report.getOverlaps().size());
-    Assert.assertEquals(1, MetaFixer.calculateMerges(10, report.getOverlaps()).size());
+    assertEquals(6, report.getOverlaps().size());
+    assertEquals(1, MetaFixer.calculateMerges(10, report.getOverlaps()).size());
     MetaFixer fixer = new MetaFixer(services);
     fixer.fixOverlaps(report);
     while (true) {


[hbase] 01/02: Add status when fixing hole

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

View the commit online:
https://github.com/apache/hbase/commit/a05cef75c4b33171ab29d89d0fbb0fbbc11d6d39

commit a05cef75c4b33171ab29d89d0fbb0fbbc11d6d39
Author: stack <st...@apache.org>
AuthorDate: Tue Nov 19 09:53:58 2019 -0800

    Add status when fixing hole
    
    TODO: Add region to master memory and region state.
---
 .../src/main/java/org/apache/hadoop/hbase/master/MetaFixer.java    | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetaFixer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetaFixer.java
index 3477ec6..5cfa25a 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetaFixer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetaFixer.java
@@ -100,10 +100,9 @@ class MetaFixer {
       // If an error here, then we'll have a region in the filesystem but not
       // in hbase:meta (if the below fails). Should be able to rerun the fix.
       // The second call to createRegionDir will just go through. Idempotent.
-      Put put = MetaTableAccessor.makePutFromRegionInfo(ri, HConstants.LATEST_TIMESTAMP);
-      MetaTableAccessor.putsToMetaTable(this.masterServices.getConnection(),
-          Collections.singletonList(put));
-      LOG.info("Fixed hole by adding {}; region is NOT assigned (assign to online).", ri);
+      MetaTableAccessor.addRegionToMeta(this.masterServices.getConnection(), ri);
+      LOG.info("Fixed hole by adding {} in CLOSED state; region NOT assigned (assign to ONLINE).",
+          ri);
     }
   }