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 36a0693..28163fd 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 @@ -1618,11 +1618,7 @@ public class HMaster extends HRegionServer implements MasterServices, Server { } // check replication scope - if (hcd.getScope() < 0) { - String message = "Replication scope for column family " - + hcd.getNameAsString() + " must be positive."; - warnOrThrowExceptionForFailure(logWarn, CONF_KEY, message, null); - } + checkReplicationScope(hcd); // check data replication factor, it can be 0(default value) when user has not explicitly // set the value, in this case we use default replication factor set in the file system. @@ -1636,6 +1632,16 @@ public class HMaster extends HRegionServer implements MasterServices, Server { } } + private void checkReplicationScope(HColumnDescriptor hcd) throws IOException{ + // check replication scope + if (hcd.getScope() < 0 || hcd.getScope() > 1) { + String message = "Replication scope for column family " + + hcd.getNameAsString() + " must be 0/1."; + LOG.warn(message); + throw new DoNotRetryIOException(message); + } + } + private void checkCompactionPolicy(Configuration conf, HTableDescriptor htd) throws IOException { // FIFO compaction has some requirements @@ -1869,6 +1875,7 @@ public class HMaster extends HRegionServer implements MasterServices, Server { checkInitialized(); checkCompression(columnDescriptor); checkEncryption(conf, columnDescriptor); + checkReplicationScope(columnDescriptor); if (cpHost != null) { if (cpHost.preAddColumn(tableName, columnDescriptor)) { return; @@ -1895,6 +1902,7 @@ public class HMaster extends HRegionServer implements MasterServices, Server { checkInitialized(); checkCompression(descriptor); checkEncryption(conf, descriptor); + checkReplicationScope(descriptor); if (cpHost != null) { if (cpHost.preModifyColumn(tableName, descriptor)) { return;