Index: conf/hive-default.xml =================================================================== --- conf/hive-default.xml (revision 5533) +++ conf/hive-default.xml (working copy) @@ -485,4 +485,15 @@ Whether sorting is enforced. If true, while inserting into the table, sorting is enforced. + + hive.metastore.server.min.threads + 200 + Minimum number of worker threads in the Thrift server's pool. + + + + hive.metastore.server.max.threads + 100000 + Maximum number of worker threads in the Thrift server's pool. + Index: metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java =================================================================== --- metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java (revision 5533) +++ metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java (working copy) @@ -110,6 +110,10 @@ init(); } + public HiveConf getConf() { + return hiveConf; + } + private ClassLoader classLoader; private AlterHandler alterHandler; { @@ -960,12 +964,22 @@ port = new Integer(args[0]); } try { + + HMSHandler handler = new HMSHandler("new db based metaserver"); + HiveConf conf = handler.getConf(); + + // Server will create new threads up to max as necessary. After an idle + // period, it will destory threads to keep the number of threads in the + // pool to min. + int minWorkerThreads = conf.getIntVar(HiveConf.ConfVars.METASTORESERVERMINTHREADS); + int maxWorkerThreads = conf.getIntVar(HiveConf.ConfVars.METASTORESERVERMAXTHREADS); + TServerTransport serverTransport = new TServerSocket(port); - Iface handler = new HMSHandler("new db based metaserver"); FacebookService.Processor processor = new ThriftHiveMetastore.Processor( handler); TThreadPoolServer.Options options = new TThreadPoolServer.Options(); - options.minWorkerThreads = 200; + options.minWorkerThreads = minWorkerThreads; + options.maxWorkerThreads = maxWorkerThreads; TServer server = new TThreadPoolServer(processor, serverTransport, new TTransportFactory(), new TTransportFactory(), new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory(), options); Index: common/src/java/org/apache/hadoop/hive/conf/HiveConf.java =================================================================== --- common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (revision 5533) +++ common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (working copy) @@ -51,7 +51,7 @@ public static final HiveConf.ConfVars[] metaVars = { HiveConf.ConfVars.METASTOREDIRECTORY, HiveConf.ConfVars.METASTOREWAREHOUSE, - HiveConf.ConfVars.METASTOREURIS + HiveConf.ConfVars.METASTOREURIS, }; /** @@ -95,6 +95,8 @@ METASTOREURIS("hive.metastore.uris", ""), METASTOREPWD("javax.jdo.option.ConnectionPassword", ""), + METASTORESERVERMINTHREADS("hive.metastore.server.min.threads", 200), + METASTORESERVERMAXTHREADS("hive.metastore.server.max.threads", Integer.MAX_VALUE), // CLI CLIIGNOREERRORS("hive.cli.errors.ignore", false),