From 8a0b742b4d4fad16cd6f39629ca79324634a1eaa Mon Sep 17 00:00:00 2001 From: Michael Stack Date: Fri, 13 Jul 2012 07:20:25 +0000 Subject: [PATCH] HBASE-6370 Add compression codec test at HMaster when createTable/modifyColumn/modifyTable git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1361058 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/hadoop/hbase/master/HMaster.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) 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 af6caba4b47..a97a4337f77 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 @@ -101,6 +101,7 @@ import org.apache.hadoop.hbase.monitoring.TaskMonitor; import org.apache.hadoop.hbase.replication.regionserver.Replication; import org.apache.hadoop.hbase.security.User; import org.apache.hadoop.hbase.util.Bytes; +import org.apache.hadoop.hbase.util.CompressionTest; import org.apache.hadoop.hbase.util.FSTableDescriptors; import org.apache.hadoop.hbase.util.HasThread; import org.apache.hadoop.hbase.util.InfoServer; @@ -285,6 +286,9 @@ Server { */ private ObjectName mxBean = null; + //should we check the compression codec type at master side, default true, HBASE-6370 + private final boolean masterCheckCompression; + /** * Initializes the HMaster. The steps are as follows: *

@@ -352,6 +356,9 @@ Server { this.metrics = new MasterMetrics(getServerName().toString()); // metrics interval: using the same property as region server. this.msgInterval = conf.getInt("hbase.regionserver.msginterval", 3 * 1000); + + //should we check the compression codec type at master side, default true, HBASE-6370 + this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true); } /** @@ -1376,6 +1383,7 @@ Server { HRegionInfo [] newRegions = getHRegionInfos(hTableDescriptor, splitKeys); checkInitialized(); + checkCompression(hTableDescriptor); if (cpHost != null) { cpHost.preCreateTable(hTableDescriptor, newRegions); } @@ -1389,6 +1397,21 @@ Server { } + private void checkCompression(final HTableDescriptor htd) + throws IOException { + if (!this.masterCheckCompression) return; + for (HColumnDescriptor hcd : htd.getColumnFamilies()) { + checkCompression(hcd); + } + } + + private void checkCompression(final HColumnDescriptor hcd) + throws IOException { + if (!this.masterCheckCompression) return; + CompressionTest.testCompression(hcd.getCompression()); + CompressionTest.testCompression(hcd.getCompactionCompression()); + } + @Override public CreateTableResponse createTable(RpcController controller, CreateTableRequest req) throws ServiceException { @@ -1505,6 +1528,7 @@ Server { try { checkInitialized(); + checkCompression(descriptor); if (cpHost != null) { if (cpHost.preModifyColumn(tableName, descriptor)) { return ModifyColumnResponse.newBuilder().build(); @@ -1626,6 +1650,7 @@ Server { HTableDescriptor htd = HTableDescriptor.convert(req.getTableSchema()); try { checkInitialized(); + checkCompression(htd); if (cpHost != null) { cpHost.preModifyTable(tableName, htd); }