Repository: kylin
Updated Branches:
  refs/heads/KYLIN-2006 db9910568 -> aea46d7ce (forced update)


KYLIN-2166 Unclosed HBaseAdmin in StorageCleanupJob#cleanUnusedHBaseTables


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

Branch: refs/heads/KYLIN-2006
Commit: dc1866a8f21956acea6d489e37a731e87faf4502
Parents: 7211d92
Author: lidongsjtu <lid...@apache.org>
Authored: Mon Nov 7 23:59:15 2016 +0800
Committer: lidongsjtu <lid...@apache.org>
Committed: Mon Nov 7 23:59:55 2016 +0800

----------------------------------------------------------------------
 .../apache/kylin/tool/StorageCleanupJob.java    | 81 ++++++++++----------
 1 file changed, 40 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/dc1866a8/tool/src/main/java/org/apache/kylin/tool/StorageCleanupJob.java
----------------------------------------------------------------------
diff --git a/tool/src/main/java/org/apache/kylin/tool/StorageCleanupJob.java 
b/tool/src/main/java/org/apache/kylin/tool/StorageCleanupJob.java
index 3f82e94..4252e74 100644
--- a/tool/src/main/java/org/apache/kylin/tool/StorageCleanupJob.java
+++ b/tool/src/main/java/org/apache/kylin/tool/StorageCleanupJob.java
@@ -82,55 +82,54 @@ public class StorageCleanupJob extends AbstractApplication {
     private void cleanUnusedHBaseTables(Configuration conf) throws IOException 
{
         CubeManager cubeMgr = 
CubeManager.getInstance(KylinConfig.getInstanceFromEnv());
         // get all kylin hbase tables
-        HBaseAdmin hbaseAdmin = new HBaseAdmin(conf);
-        String tableNamePrefix = 
IRealizationConstants.SharedHbaseStorageLocationPrefix;
-        HTableDescriptor[] tableDescriptors = 
hbaseAdmin.listTables(tableNamePrefix + ".*");
-        List<String> allTablesNeedToBeDropped = new ArrayList<String>();
-        for (HTableDescriptor desc : tableDescriptors) {
-            String host = desc.getValue(IRealizationConstants.HTableTag);
-            if 
(KylinConfig.getInstanceFromEnv().getMetadataUrlPrefix().equalsIgnoreCase(host))
 {
-                //only take care htables that belongs to self, and created 
more than 2 days
-                
allTablesNeedToBeDropped.add(desc.getTableName().getNameAsString());
+        try (HBaseAdmin hbaseAdmin = new HBaseAdmin(conf)) {
+            String tableNamePrefix = 
IRealizationConstants.SharedHbaseStorageLocationPrefix;
+            HTableDescriptor[] tableDescriptors = 
hbaseAdmin.listTables(tableNamePrefix + ".*");
+            List<String> allTablesNeedToBeDropped = new ArrayList<String>();
+            for (HTableDescriptor desc : tableDescriptors) {
+                String host = desc.getValue(IRealizationConstants.HTableTag);
+                if 
(KylinConfig.getInstanceFromEnv().getMetadataUrlPrefix().equalsIgnoreCase(host))
 {
+                    //only take care htables that belongs to self, and created 
more than 2 days
+                    
allTablesNeedToBeDropped.add(desc.getTableName().getNameAsString());
+                }
             }
-        }
 
-        // remove every segment htable from drop list
-        for (CubeInstance cube : cubeMgr.listAllCubes()) {
-            for (CubeSegment seg : cube.getSegments()) {
-                String tablename = seg.getStorageLocationIdentifier();
-                if (allTablesNeedToBeDropped.contains(tablename)) {
-                    allTablesNeedToBeDropped.remove(tablename);
-                    logger.info("Exclude table " + tablename + " from drop 
list, as the table belongs to cube " + cube.getName() + " with status " + 
cube.getStatus());
+            // remove every segment htable from drop list
+            for (CubeInstance cube : cubeMgr.listAllCubes()) {
+                for (CubeSegment seg : cube.getSegments()) {
+                    String tablename = seg.getStorageLocationIdentifier();
+                    if (allTablesNeedToBeDropped.contains(tablename)) {
+                        allTablesNeedToBeDropped.remove(tablename);
+                        logger.info("Exclude table " + tablename + " from drop 
list, as the table belongs to cube " + cube.getName() + " with status " + 
cube.getStatus());
+                    }
                 }
             }
-        }
 
-        if (delete == true) {
-            // drop tables
-            ExecutorService executorService = 
Executors.newSingleThreadExecutor();
-            for (String htableName : allTablesNeedToBeDropped) {
-                FutureTask futureTask = new FutureTask(new 
DeleteHTableRunnable(hbaseAdmin, htableName));
-                executorService.execute(futureTask);
-                try {
-                    futureTask.get(deleteTimeout, TimeUnit.MINUTES);
-                } catch (TimeoutException e) {
-                    logger.warn("It fails to delete htable " + htableName + ", 
for it cost more than " + deleteTimeout + " minutes!");
-                    futureTask.cancel(true);
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    futureTask.cancel(true);
+            if (delete == true) {
+                // drop tables
+                ExecutorService executorService = 
Executors.newSingleThreadExecutor();
+                for (String htableName : allTablesNeedToBeDropped) {
+                    FutureTask futureTask = new FutureTask(new 
DeleteHTableRunnable(hbaseAdmin, htableName));
+                    executorService.execute(futureTask);
+                    try {
+                        futureTask.get(deleteTimeout, TimeUnit.MINUTES);
+                    } catch (TimeoutException e) {
+                        logger.warn("It fails to delete htable " + htableName 
+ ", for it cost more than " + deleteTimeout + " minutes!");
+                        futureTask.cancel(true);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        futureTask.cancel(true);
+                    }
                 }
+                executorService.shutdown();
+            } else {
+                System.out.println("--------------- Tables To Be Dropped 
---------------");
+                for (String htableName : allTablesNeedToBeDropped) {
+                    System.out.println(htableName);
+                }
+                
System.out.println("----------------------------------------------------");
             }
-            executorService.shutdown();
-        } else {
-            System.out.println("--------------- Tables To Be Dropped 
---------------");
-            for (String htableName : allTablesNeedToBeDropped) {
-                System.out.println(htableName);
-            }
-            
System.out.println("----------------------------------------------------");
         }
-
-        hbaseAdmin.close();
     }
 
     @Override

Reply via email to