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/10 14:15:06 UTC
[hbase] branch master updated: HBASE-21297 ModifyTableProcedure can
throw TNDE instead of IOE in case of REGION_REPLICATION change
This is an automated email from the ASF dual-hosted git repository.
zghao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new 5d32e80 HBASE-21297 ModifyTableProcedure can throw TNDE instead of IOE in case of REGION_REPLICATION change
5d32e80 is described below
commit 5d32e80f9ecd74c0a89c81b57f02e1ad400c2a2f
Author: Nihal Jain <ni...@gmail.com>
AuthorDate: Thu Oct 25 22:34:17 2018 +0530
HBASE-21297 ModifyTableProcedure can throw TNDE instead of IOE in case of REGION_REPLICATION change
Signed-off-by: Guanghao Zhang <zg...@apache.org>
---
.../hbase/master/procedure/ModifyTableProcedure.java | 4 +++-
.../org/apache/hadoop/hbase/client/TestAdmin1.java | 20 ++++++++++++++++++++
2 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java
index 920c18b..0567ede 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java
@@ -27,6 +27,7 @@ import org.apache.hadoop.hbase.HBaseIOException;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.MetaTableAccessor;
import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.TableNotDisabledException;
import org.apache.hadoop.hbase.TableNotFoundException;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.RegionInfo;
@@ -249,7 +250,8 @@ public class ModifyTableProcedure
.isTableState(getTableName(), TableState.State.ENABLED)) {
if (modifiedTableDescriptor.getRegionReplication() != unmodifiedTableDescriptor
.getRegionReplication()) {
- throw new IOException("REGION_REPLICATION change is not supported for enabled tables");
+ throw new TableNotDisabledException(
+ "REGION_REPLICATION change is not supported for enabled tables");
}
}
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin1.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin1.java
index b3df2cc..40de30a 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin1.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin1.java
@@ -523,6 +523,26 @@ public class TestAdmin1 {
assertFalse(this.admin.tableExists(tableName));
}
+ @Test(expected = TableNotDisabledException.class)
+ public void testModifyRegionReplicasEnabledTable() throws Exception {
+ final TableName tableName = TableName.valueOf(name.getMethodName());
+ TEST_UTIL.createTable(tableName, HConstants.CATALOG_FAMILY).close();
+
+ // Modify region replication count
+ TableDescriptor htd = TableDescriptorBuilder.newBuilder(admin.getDescriptor(tableName))
+ .setRegionReplication(3).build();
+ try {
+ // try to modify the region replication count without disabling the table
+ admin.modifyTable(htd);
+ fail("Expected an exception");
+ } finally {
+ // Delete the table
+ admin.disableTable(tableName);
+ admin.deleteTable(tableName);
+ assertFalse(admin.tableExists(tableName));
+ }
+ }
+
/**
* Verify schema modification takes.
*/