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);
}
}