KYLIN-1327 Add from filter to UpdateHTableHostCLI

Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/dfcebb3e
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/dfcebb3e
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/dfcebb3e

Branch: refs/heads/2.0-rc
Commit: dfcebb3eaf33b60cdf6e3b93933994e7021591e6
Parents: 203f63b
Author: lidongsjtu <don...@ebay.com>
Authored: Tue Jan 19 10:40:00 2016 +0800
Committer: lidongsjtu <don...@ebay.com>
Committed: Tue Jan 19 10:40:18 2016 +0800

----------------------------------------------------------------------
 .../storage/hbase/util/UpdateHTableHostCLI.java | 32 +++++++++++++-------
 1 file changed, 21 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/dfcebb3e/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/UpdateHTableHostCLI.java
----------------------------------------------------------------------
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/UpdateHTableHostCLI.java
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/UpdateHTableHostCLI.java
index 1ff98a4..f70ca10 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/UpdateHTableHostCLI.java
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/UpdateHTableHostCLI.java
@@ -54,9 +54,11 @@ public class UpdateHTableHostCLI {
     private List<String> htables;
     private HBaseAdmin hbaseAdmin;
     private KylinConfig kylinConfig;
+    private String oldHostValue;
 
-    public UpdateHTableHostCLI(List<String> htables) throws IOException {
+    public UpdateHTableHostCLI(List<String> htables, String oldHostValue) 
throws IOException {
         this.htables = htables;
+        this.oldHostValue = oldHostValue;
         this.hbaseAdmin = new 
HBaseAdmin(HBaseConnection.getCurrentHBaseConfiguration());
         this.kylinConfig = KylinConfig.getInstanceFromEnv();
     }
@@ -67,16 +69,21 @@ public class UpdateHTableHostCLI {
         }
 
         List<String> tableNames = 
getHTableNames(KylinConfig.getInstanceFromEnv());
-        String filterType = args[0].toLowerCase();
+        if (!args[0].toLowerCase().equals("-from")) {
+            printUsageAndExit();
+        }
+        String oldHostValue = args[1].toLowerCase();
+        String filterType = args[2].toLowerCase();
         if (filterType.equals("-table")) {
-            tableNames = filterByTables(tableNames, 
Arrays.asList(args).subList(1, args.length));
+            tableNames = filterByTables(tableNames, 
Arrays.asList(args).subList(3, args.length));
         } else if (filterType.equals("-cube")) {
-            tableNames = filterByCubes(tableNames, 
Arrays.asList(args).subList(1, args.length));
+            tableNames = filterByCubes(tableNames, 
Arrays.asList(args).subList(3, args.length));
         } else if (!filterType.equals("-all")) {
             printUsageAndExit();
         }
+        logger.info("These htables are needed to be updated: " + 
StringUtils.join(tableNames, ","));
 
-        UpdateHTableHostCLI updateHTableHostCLI = new 
UpdateHTableHostCLI(tableNames);
+        UpdateHTableHostCLI updateHTableHostCLI = new 
UpdateHTableHostCLI(tableNames, oldHostValue);
         updateHTableHostCLI.execute();
 
         
logger.info("=================================================================");
@@ -104,7 +111,7 @@ public class UpdateHTableHostCLI {
     }
 
     private static void printUsageAndExit() {
-        logger.info("Usage: exec -all|-cube cubeA,cubeB|-table tableA,tableB");
+        logger.info("Usage: exec -from oldHostValue -all|-cube 
cubeA,cubeB|-table tableA,tableB");
         System.exit(0);
     }
 
@@ -172,17 +179,20 @@ public class UpdateHTableHostCLI {
 
     private void updateHtable(String tableName) throws IOException {
         HTableDescriptor desc = 
hbaseAdmin.getTableDescriptor(TableName.valueOf(tableName));
-        hbaseAdmin.disableTable(tableName);
-        desc.setValue(IRealizationConstants.HTableTag, 
kylinConfig.getMetadataUrlPrefix());
-        hbaseAdmin.modifyTable(tableName, desc);
-        hbaseAdmin.enableTable(tableName);
+        if 
(oldHostValue.equals(desc.getValue(kylinConfig.getMetadataUrlPrefix()))) {
+            desc.setValue(IRealizationConstants.HTableTag, 
kylinConfig.getMetadataUrlPrefix());
+            hbaseAdmin.disableTable(tableName);
+            hbaseAdmin.modifyTable(tableName, desc);
+            hbaseAdmin.enableTable(tableName);
+
+            updatedResources.add(tableName);
+        }
     }
 
     public void execute() {
         for (String htable : htables) {
             try {
                 updateHtable(htable);
-                updatedResources.add(htable);
             } catch (IOException ex) {
                 ex.printStackTrace();
                 errorMsgs.add("Update HTable[" + htable + "] failed: " + 
ex.getMessage());

Reply via email to