From 7c9d18ea12888fc45f75568977e3fb67ddf8feec Mon Sep 17 00:00:00 2001 From: liujunhong Date: Tue, 27 Dec 2016 21:38:55 +0800 Subject: [PATCH] fix for HBASE-17374 Signed-off-by: liujunhong --- .../org/apache/hadoop/hbase/security/access/AccessController.java | 2 +- .../org/apache/hadoop/hbase/security/access/TableAuthManager.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java index 742d6e3..8118d84 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java @@ -983,7 +983,7 @@ public class AccessController extends BaseMasterAndRegionObserver public void stop(CoprocessorEnvironment env) { if (this.authManager != null) { - TableAuthManager.release(authManager); + TableAuthManager.release(authManager, regionEnv == null); } } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/TableAuthManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/TableAuthManager.java index 8f6774e..9cd6344 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/TableAuthManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/TableAuthManager.java @@ -774,8 +774,9 @@ public class TableAuthManager implements Closeable { /** * Releases the resources for the given TableAuthManager if the reference count is down to 0. * @param instance TableAuthManager to be released + * @param shouldClose is the instance of TableAuthManager should be close */ - public synchronized static void release(TableAuthManager instance) { + public synchronized static void release(TableAuthManager instance, boolean shouldClose) { if (refCount.get(instance) == null || refCount.get(instance) < 1) { String msg = "Something wrong with the TableAuthManager reference counting: " + instance + " whose count is " + refCount.get(instance); @@ -786,7 +787,7 @@ public class TableAuthManager implements Closeable { } else { int ref = refCount.get(instance); refCount.put(instance, ref-1); - if (ref-1 == 0) { + if (ref-1 <= 0 && shouldClose) { instance.close(); managerMap.remove(instance.getZKPermissionWatcher().getWatcher()); refCount.remove(instance); -- 2.9.3 (Apple Git-75)