[ https://issues.apache.org/jira/browse/HIVE-584?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ning Zhang reassigned HIVE-584: ------------------------------- Assignee: (was: Ning Zhang) > Clean up global and ThreadLocal variables in Hive > ------------------------------------------------- > > Key: HIVE-584 > URL: https://issues.apache.org/jira/browse/HIVE-584 > Project: Hadoop Hive > Issue Type: Improvement > Affects Versions: 0.3.0, 0.3.1 > Reporter: Zheng Shao > > Currently in Hive code there are several global and ThreadLocal variables > that need to be cleaned. > Specifically, the following classes are involved: > 1. HiveConf: contains hive configurations (and a classloader) > 2. Hive class: contains a static member Hive db. Hive class contains a member > HiveConf conf, as well as a ThreadLocal storage of IMetaStoreClient. > 3. SessionState: contains a static ThreadLocal storage of SessionState. > SessionState class contains a Hive db, a HiveConf conf, a history logger, and > a bunch of standard input/output streams > 4. CliSessionState: SessionState plus some command options and the command > file name. > 5. All classes that try to get Hive db or HiveConf from global static Hive > db, or SessionState. > There are several problems with the current design. To name a few: > 1. SessionState instances are ThreadLocal, but SessionState contains Hive db > which also contains ThreadLocal storage. Not sure a db can be shared across > different threads or not? What is the global static Hive db? > 2. We pass HiveConf and Hive db in two ways to classes like Task: Sometimes > through initialize(), sometimes through SessionState. This complicates the > code a lot. It's hard to know which HiveConf and which db we should use. > We need to think about a better way to do it. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.