You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by dd...@apache.org on 2014/02/26 01:38:15 UTC
svn commit: r1571884 - in /hbase/branches/hbase-10070/hbase-server/src:
main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java
Author: ddas
Date: Wed Feb 26 00:38:15 2014
New Revision: 1571884
URL: http://svn.apache.org/r1571884
Log:
HBASE-10362. HBCK changes for supporting region replicas
Modified:
hbase/branches/hbase-10070/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
hbase/branches/hbase-10070/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java
Modified: hbase/branches/hbase-10070/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
URL: http://svn.apache.org/viewvc/hbase/branches/hbase-10070/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java?rev=1571884&r1=1571883&r2=1571884&view=diff
==============================================================================
--- hbase/branches/hbase-10070/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java (original)
+++ hbase/branches/hbase-10070/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java Wed Feb 26 00:38:15 2014
@@ -80,6 +80,7 @@ import org.apache.hadoop.hbase.client.HC
import org.apache.hadoop.hbase.client.HConnectionManager;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.MetaScanner;
+import org.apache.hadoop.hbase.client.RegionReplicaUtil;
import org.apache.hadoop.hbase.client.MetaScanner.MetaScannerVisitor;
import org.apache.hadoop.hbase.client.MetaScanner.MetaScannerVisitorBase;
import org.apache.hadoop.hbase.client.Put;
@@ -1758,6 +1759,7 @@ public class HBaseFsck extends Configure
if (hbi.containsOnlyHdfsEdits()) {
return;
}
+ if (hbi.isSkipChecks()) return;
if (inMeta && inHdfs && isDeployed && deploymentMatchesMeta && shouldBeDeployed) {
return;
} else if (inMeta && inHdfs && !shouldBeDeployed && !isDeployed) {
@@ -1922,13 +1924,11 @@ public class HBaseFsck extends Configure
*/
SortedMap<TableName, TableInfo> checkIntegrity() throws IOException {
tablesInfo = new TreeMap<TableName,TableInfo> ();
- List<HbckInfo> noHDFSRegionInfos = new ArrayList<HbckInfo>();
LOG.debug("There are " + regionInfoMap.size() + " region info entries");
for (HbckInfo hbi : regionInfoMap.values()) {
// Check only valid, working regions
if (hbi.metaEntry == null) {
// this assumes that consistency check has run loadMetaEntry
- noHDFSRegionInfos.add(hbi);
Path p = hbi.getHdfsRegionDir();
if (p == null) {
errors.report("No regioninfo in Meta or HDFS. " + hbi);
@@ -3384,6 +3384,7 @@ public class HBaseFsck extends Configure
// check to see if the existence of this region matches the region in META
for (HRegionInfo r:regions) {
HbckInfo hbi = hbck.getOrCreateInfo(r.getEncodedName());
+ if (!RegionReplicaUtil.isDefaultReplica(r)) hbi.setSkipChecks(true);
hbi.addServer(r, rsinfo);
}
} catch (IOException e) { // unable to connect to the region server.
Modified: hbase/branches/hbase-10070/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java
URL: http://svn.apache.org/viewvc/hbase/branches/hbase-10070/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java?rev=1571884&r1=1571883&r2=1571884&view=diff
==============================================================================
--- hbase/branches/hbase-10070/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java (original)
+++ hbase/branches/hbase-10070/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java Wed Feb 26 00:38:15 2014
@@ -356,7 +356,19 @@ public class TestHBaseFsck {
* @throws KeeperException
*/
HTable setupTable(TableName tablename) throws Exception {
+ return setupTableWithRegionReplica(tablename, 1);
+ }
+
+ /**
+ * Setup a clean table with a certain region_replica count
+ * @param tableName
+ * @param replicaCount
+ * @return
+ * @throws Exception
+ */
+ HTable setupTableWithRegionReplica(TableName tablename, int replicaCount) throws Exception {
HTableDescriptor desc = new HTableDescriptor(tablename);
+ desc.setRegionReplication(replicaCount);
HColumnDescriptor hcd = new HColumnDescriptor(Bytes.toString(FAM));
desc.addFamily(hcd); // If a table has no CF's it doesn't get checked
TEST_UTIL.getHBaseAdmin().createTable(desc, SPLITS);
@@ -552,6 +564,23 @@ public class TestHBaseFsck {
}
}
+ /*
+ * This creates a table with region_replica > 1 and verifies hbck runs
+ * successfully
+ */
+ @Test
+ public void testHbckWithRegionReplica() throws Exception {
+ TableName table =
+ TableName.valueOf("tableWithReplica");
+ try {
+ setupTableWithRegionReplica(table, 2);
+ assertNoErrors(doFsck(conf, false));
+ assertEquals(ROWKEYS.length, countRows());
+ } finally {
+ deleteTable(table);
+ }
+ }
+
/**
* Get region info from local cluster.
*/