[ https://issues.apache.org/jira/browse/HIVE-14524?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Wei Yan reassigned HIVE-14524: ------------------------------ Assignee: Wei Yan (was: Chao Sun) > BaseSemanticAnalyzer may leak HMS connection > -------------------------------------------- > > Key: HIVE-14524 > URL: https://issues.apache.org/jira/browse/HIVE-14524 > Project: Hive > Issue Type: Bug > Components: HiveServer2 > Affects Versions: 2.2.0 > Reporter: Chao Sun > Assignee: Wei Yan > > Currently {{BaseSemanticAnalyzer}} keeps a copy of thread-local {{Hive}} > object to connect to HMS. However, in some cases Hive may overwrite the > existing {{Hive}} object: > {{Hive#getInternal}}: > {code} > private static Hive getInternal(HiveConf c, boolean needsRefresh, boolean > isFastCheck, > boolean doRegisterAllFns) throws HiveException { > Hive db = hiveDB.get(); > if (db == null || !db.isCurrentUserOwner() || needsRefresh > || (c != null && db.metaStoreClient != null && !isCompatible(db, c, > isFastCheck))) { > return create(c, false, db, doRegisterAllFns); > } > if (c != null) { > db.conf = c; > } > return db; > } > {code} > *This poses an potential problem*: if one first instantiates a > {{BaseSemanticAnalyzer}} object with the current {{Hive}} object (let's call > it A), and for some reason A is overwritten by B with the code above, then > {{BaseSemanticAnalyzer}} may keep using A to contact HMS, which will leak > connections. > This can be reproduced by the following steps: > 1. open a session > 2. execute some simple query such as {{desc formatted src}} > 3. change a metastore property (I know, this is not a perfect example...), > for instance: {{set hive.txn.timeout=500}} > 4. run another command such as {{desc formatted src}} again > Notice that in step 4), since a metavar is changed the {{isCompatible}} will > return false, and hence a new {{Hive}} object is created. As result, you'll > observe in the HS2 log that an connection has been leaked. -- This message was sent by Atlassian JIRA (v6.3.4#6332)