You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2018/01/26 14:56:29 UTC
[21/34] kylin git commit: KYLIN-3164 HBase connection must be closed
when clearing connection pool
KYLIN-3164 HBase connection must be closed when clearing connection pool
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/9dfd8b9c
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/9dfd8b9c
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/9dfd8b9c
Branch: refs/heads/master
Commit: 9dfd8b9c8a5ad4b185f9855b7ef167087f06d2a1
Parents: baf7133
Author: Li Yang <li...@apache.org>
Authored: Mon Jan 15 13:25:56 2018 +0800
Committer: Li Yang <li...@apache.org>
Committed: Fri Jan 26 22:54:58 2018 +0800
----------------------------------------------------------------------
.../kylin/storage/hbase/HBaseConnection.java | 38 +++++++++++++++-----
1 file changed, 29 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/9dfd8b9c/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseConnection.java
----------------------------------------------------------------------
diff --git a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseConnection.java b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseConnection.java
index 16bd20d..0c2fb04 100644
--- a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseConnection.java
+++ b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseConnection.java
@@ -20,8 +20,10 @@ package org.apache.kylin.storage.hbase;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
@@ -74,14 +76,11 @@ public class HBaseConnection {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
- closeCoprocessorPool();
-
- for (Connection conn : connPool.values()) {
- try {
- conn.close();
- } catch (IOException e) {
- logger.error("error closing hbase connection " + conn, e);
- }
+ try {
+ closeCoprocessorPool();
+ closeAndRestConnPool().join();
+ } catch (InterruptedException e) {
+ logger.error("", e);
}
}
});
@@ -128,9 +127,30 @@ public class HBaseConnection {
coprocessorPool.shutdownNow();
}
}
+
+ private static Thread closeAndRestConnPool() {
+ final List<Connection> copy = new ArrayList<>(connPool.values());
+ connPool.clear();
+
+ Thread t = new Thread() {
+ public void run() {
+ logger.info("Closing HBase connections...");
+ for (Connection conn : copy) {
+ try {
+ conn.close();
+ } catch (Exception e) {
+ logger.error("error closing hbase connection " + conn, e);
+ }
+ }
+ }
+ };
+ t.setName("close-hbase-conn");
+ t.start();
+ return t;
+ }
public static void clearConnCache() {
- connPool.clear();
+ closeAndRestConnPool();
}
public static Configuration getCurrentHBaseConfiguration() {