HIVE-10925: Non-static threadlocals in metastore code can potentially cause 
memory leak (Vaibhav Gumashta reviewed by Sushanth Sowmyan, Alan Gates, Thejas 
Nair)


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

Branch: refs/heads/hbase-metastore
Commit: c9b7d253853573339f54536a552d2564a7a2eadb
Parents: bef5266
Author: Vaibhav Gumashta <vgumas...@apache.org>
Authored: Thu Jun 4 16:20:00 2015 -0700
Committer: Vaibhav Gumashta <vgumas...@apache.org>
Committed: Thu Jun 4 16:20:00 2015 -0700

----------------------------------------------------------------------
 .../java/org/apache/hadoop/hive/metastore/HiveMetaStore.java | 4 ++--
 .../authorization/AuthorizationPreEventListener.java         | 8 ++++----
 2 files changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/c9b7d253/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
----------------------------------------------------------------------
diff --git 
a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java 
b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
index 1688920..85a734c 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
@@ -299,7 +299,7 @@ public class HiveMetaStore extends ThriftHiveMetastore {
           }
         };
 
-    private final ThreadLocal<TxnHandler> threadLocalTxn = new 
ThreadLocal<TxnHandler>() {
+    private static final ThreadLocal<TxnHandler> threadLocalTxn = new 
ThreadLocal<TxnHandler>() {
       @Override
       protected synchronized TxnHandler initialValue() {
         return null;
@@ -316,7 +316,7 @@ public class HiveMetaStore extends ThriftHiveMetastore {
 
     // Thread local configuration is needed as many threads could make changes
     // to the conf using the connection hook
-    private final ThreadLocal<Configuration> threadLocalConf =
+    private static final ThreadLocal<Configuration> threadLocalConf =
         new ThreadLocal<Configuration>() {
           @Override
           protected synchronized Configuration initialValue() {

http://git-wip-us.apache.org/repos/asf/hive/blob/c9b7d253/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/AuthorizationPreEventListener.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/AuthorizationPreEventListener.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/AuthorizationPreEventListener.java
index 63ba327..84f3f76 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/AuthorizationPreEventListener.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/AuthorizationPreEventListener.java
@@ -68,14 +68,14 @@ public class AuthorizationPreEventListener extends 
MetaStorePreEventListener {
   public static final Log LOG = LogFactory.getLog(
       AuthorizationPreEventListener.class);
 
-  private final ThreadLocal<Configuration> tConfig = new 
ThreadLocal<Configuration>() {
+  private static final ThreadLocal<Configuration> tConfig = new 
ThreadLocal<Configuration>() {
     @Override
     protected Configuration initialValue() {
       return new HiveConf(AuthorizationPreEventListener.class);
     }
   };
 
-  private final ThreadLocal<HiveMetastoreAuthenticationProvider> tAuthenticator
+  private static final ThreadLocal<HiveMetastoreAuthenticationProvider> 
tAuthenticator
       = new ThreadLocal<HiveMetastoreAuthenticationProvider>() {
     @Override
     protected HiveMetastoreAuthenticationProvider initialValue() {
@@ -88,7 +88,7 @@ public class AuthorizationPreEventListener extends 
MetaStorePreEventListener {
     }
   };
 
-  private final ThreadLocal<List<HiveMetastoreAuthorizationProvider>> 
tAuthorizers
+  private static final ThreadLocal<List<HiveMetastoreAuthorizationProvider>> 
tAuthorizers
       = new ThreadLocal<List<HiveMetastoreAuthorizationProvider>>() {
     @Override
     protected List<HiveMetastoreAuthorizationProvider> initialValue() {
@@ -101,7 +101,7 @@ public class AuthorizationPreEventListener extends 
MetaStorePreEventListener {
     }
   };
 
-  private final ThreadLocal<Boolean> tConfigSetOnAuths = new 
ThreadLocal<Boolean>() {
+  private static final ThreadLocal<Boolean> tConfigSetOnAuths = new 
ThreadLocal<Boolean>() {
     @Override
     protected Boolean initialValue() {
       return false;

Reply via email to