snodawn created HIVE-24605:
------------------------------

             Summary: Metastore link leak in hiveserver2
                 Key: HIVE-24605
                 URL: https://issues.apache.org/jira/browse/HIVE-24605
             Project: Hive
          Issue Type: Bug
          Components: HiveServer2
    Affects Versions: 2.1.0
            Reporter: snodawn


When we use hiveserver and connect to metastore server, we face metastore link 
leak as below:

 
{code:java}
2021-01-08T11:10:00,196 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
metadata.Hive (:()) - db.metaStoreClient.isSameConfObj(c) is false
2021-01-08T11:10:00,196 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
hive.metastore (:()) - Mestastore configuration hive.metastore.filter.hook 
changed from org.apache.hadoop.hive.metastore.DefaultMetaStoreFilterHookImpl to 
org.apache.hadoop.hive.ql.security.authorization.plugin.AuthorizationMetaStoreFilterHook
2021-01-08T11:10:00,196 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
metadata.Hive (:()) - db.metaStoreClient.isCompatibleWith(c) is false
2021-01-08T11:10:00,196 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
hive.metastore (:()) - Mestastore configuration hive.metastore.filter.hook 
changed from org.apache.hadoop.hive.metastore.DefaultMetaStoreFilterHookImpl to 
org.apache.hadoop.hive.ql.security.authorization.plugin.AuthorizationMetaStoreFilterHook
2021-01-08T11:10:00,196 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
metadata.Hive (:()) - hive db is org.apache.hadoop.hive.ql.metadata.Hive@ec83e59
2021-01-08T11:10:00,196 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
metadata.Hive (:()) - 
METASTORE_FILTER_HOOK:org.apache.hadoop.hive.ql.security.authorization.plugin.AuthorizationMetaStoreFilterHook
2021-01-08T11:10:00,196 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
metadata.Hive (:()) - db.metaStoreClient.isSameConfObj(c) is false
2021-01-08T11:10:00,196 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
hive.metastore (:()) - Mestastore configuration hive.metastore.filter.hook 
changed from org.apache.hadoop.hive.metastore.DefaultMetaStoreFilterHookImpl to 
org.apache.hadoop.hive.ql.security.authorization.plugin.AuthorizationMetaStoreFilterHook
2021-01-08T11:10:00,196 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
metadata.Hive (:()) - db.metaStoreClient.isCompatibleWith(c) is false
2021-01-08T11:10:00,196 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
hive.metastore (:()) - Mestastore configuration hive.metastore.filter.hook 
changed from org.apache.hadoop.hive.metastore.DefaultMetaStoreFilterHookImpl to 
org.apache.hadoop.hive.ql.security.authorization.plugin.AuthorizationMetaStoreFilterHook
2021-01-08T11:10:00,196 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
metadata.Hive (:()) - Closing current thread's connection to Hive Metastore.
2021-01-08T11:10:00,201 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
hive.metastore (:()) - Closed a connection to metastore, current connections: 0
2021-01-08T11:10:00,201 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
metadata.Hive (:()) - Closing current thread's connection to Hive Metastore.
2021-01-08T11:10:00,201 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
metadata.Hive (:()) - current Hive is 
org.apache.hadoop.hive.ql.metadata.Hive@5898c9e7
2021-01-08T11:10:00,202 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
hive.metastore (:()) - Trying to connect to metastore with URI thrift://xxx
2021-01-08T11:10:00,206 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
hive.metastore (:()) - Opened a connection to metastore, current connections: 1
2021-01-08T11:10:00,206 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
hive.metastore (:()) - Connected to metastore.
2021-01-08T11:10:00,215 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
parse.SemanticAnalyzer (:()) - Completed phase 1 of Semantic Analysis
2021-01-08T11:10:00,215 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
parse.SemanticAnalyzer (:()) - Get metadata for source tables
2021-01-08T11:10:00,215 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
parse.SemanticAnalyzer (:()) - current db in getMetaData is 
org.apache.hadoop.hive.ql.metadata.Hive@Hive@ec83e59
2021-01-08T11:10:00,215 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
metadata.Hive (:()) - current Hive is 
org.apache.hadoop.hive.ql.metadata.Hive@5898c9e7
2021-01-08T11:10:00,215 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
hive.metastore (:()) - Trying to connect to metastore with URI thrift://xxx
2021-01-08T11:10:00,218 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
hive.metastore (:()) - Opened a connection to metastore, current connections: 2
2021-01-08T11:10:00,219 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
hive.metastore (:()) - Connected to metastore.
 
.....
 
2021-01-08T11:12:16,119 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
metadata.Hive (:()) - metadata.Hive (:()) - close current: 
org.apache.hadoop.hive.ql.metadata.Hive@5898c9e7
2021-01-08T11:12:16,121 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
metadata.Hive (:()) - Closing current thread's connection to Hive Metastore, 
current is org.apache.hadoop.hive.ql.metadata.Hive@5898c9e7
2021-01-08T11:12:16,121 INFO  [qid=61_142_176_249_26122_20210108110957686_0]: 
hive.metastore (:()) - Closed a connection to metastore, current connections: 1
{code}
 

 

because HIVE_AUTHORIZATION_MANAGER is set to 
org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory

when in SessionState.setAuthorizerV2Config, sessionConf is changed, so 
Hive.create will  change and replace the old one in Hive.hiveDB. But the old 
Hive instance is already assigned in BaseSemanticAnalyzer.db, and when it's 
called, metaStoreClient will be assigned to a new one and create a new 
metastore link.  The metastoreClient in new Hive instance can be closed, but 
the old one assigned in BaseSemanticAnalyzer  will not close when we call 
Hive.close and Hive.closeCurrent, which may lead to a link leak.

So, can we use Hive.get() instead of using db.xxx in BaseSemanticAnalyzer, or 
it's better to re-assign to the new Hive instance in BaseSemanticAnalyzer  
instead of  using the old one.

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to