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 2019/01/09 03:04:55 UTC
hbase git commit: HBASE-21645 Perform sanity check and disallow table
creation/modification with region replication < 1
Repository: hbase
Updated Branches:
refs/heads/master ebe3d1d1d -> 5c902b48e
HBASE-21645 Perform sanity check and disallow table creation/modification with region replication < 1
Signed-off-by: Guanghao Zhang <zg...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/5c902b48
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/5c902b48
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/5c902b48
Branch: refs/heads/master
Commit: 5c902b48e57609975ab5f5d09076276586b59581
Parents: ebe3d1d
Author: Nihal Jain <ni...@gmail.com>
Authored: Tue Jan 8 23:24:08 2019 +0530
Committer: Guanghao Zhang <zg...@apache.org>
Committed: Wed Jan 9 10:49:19 2019 +0800
----------------------------------------------------------------------
.../org/apache/hadoop/hbase/master/HMaster.java | 7 +++++
.../hadoop/hbase/client/TestFromClientSide.java | 27 ++++++++++++++++++++
2 files changed, 34 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/5c902b48/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
index 8d47db4..9d2a743 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
@@ -2189,6 +2189,13 @@ public class HMaster extends HRegionServer implements MasterServices {
warnOrThrowExceptionForFailure(logWarn, CONF_KEY, message, null);
}
+ // check that we have minimum 1 region replicas
+ int regionReplicas = htd.getRegionReplication();
+ if (regionReplicas < 1) {
+ String message = "Table region replication should be at least one.";
+ warnOrThrowExceptionForFailure(logWarn, CONF_KEY, message, null);
+ }
+
for (ColumnFamilyDescriptor hcd : htd.getColumnFamilies()) {
if (hcd.getTimeToLive() <= 0) {
String message = "TTL for column family " + hcd.getNameAsString() + " must be positive.";
http://git-wip-us.apache.org/repos/asf/hbase/blob/5c902b48/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
index e5ffd73..21e4437 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
@@ -49,6 +49,7 @@ import org.apache.hadoop.hbase.CellScanner;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.ClusterMetrics.Option;
import org.apache.hadoop.hbase.CompareOperator;
+import org.apache.hadoop.hbase.DoNotRetryIOException;
import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HColumnDescriptor;
@@ -6706,4 +6707,30 @@ public class TestFromClientSide {
assertNull(scanner.next());
}
}
+
+ @Test(expected = DoNotRetryIOException.class)
+ public void testCreateTableWithZeroRegionReplicas() throws Exception {
+ TableName tableName = TableName.valueOf(name.getMethodName());
+ TableDescriptor desc = TableDescriptorBuilder.newBuilder(tableName)
+ .setColumnFamily(ColumnFamilyDescriptorBuilder.of(Bytes.toBytes("cf")))
+ .setRegionReplication(0)
+ .build();
+
+ TEST_UTIL.getAdmin().createTable(desc);
+ }
+
+ @Test(expected = DoNotRetryIOException.class)
+ public void testModifyTableWithZeroRegionReplicas() throws Exception {
+ TableName tableName = TableName.valueOf(name.getMethodName());
+ TableDescriptor desc = TableDescriptorBuilder.newBuilder(tableName)
+ .setColumnFamily(ColumnFamilyDescriptorBuilder.of(Bytes.toBytes("cf")))
+ .build();
+
+ TEST_UTIL.getAdmin().createTable(desc);
+ TableDescriptor newDesc = TableDescriptorBuilder.newBuilder(desc)
+ .setRegionReplication(0)
+ .build();
+
+ TEST_UTIL.getAdmin().modifyTable(newDesc);
+ }
}