diff --git common/src/java/org/apache/hadoop/hive/conf/HiveConf.java common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 6678de6..64a30e6 100644 --- common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -162,6 +162,7 @@ public void setSparkConfigUpdated(boolean isSparkConfigUpdated) { HiveConf.ConfVars.METASTORE_BATCH_RETRIEVE_OBJECTS_MAX, HiveConf.ConfVars.METASTORE_INIT_HOOKS, HiveConf.ConfVars.METASTORE_PRE_EVENT_LISTENERS, + HiveConf.ConfVars.METASTORE_THREAD_SERVICES, HiveConf.ConfVars.HMSHANDLERATTEMPTS, HiveConf.ConfVars.HMSHANDLERINTERVAL, HiveConf.ConfVars.HMSHANDLERFORCERELOADCONF, @@ -647,7 +648,9 @@ public void setSparkConfigUpdated(boolean isSparkConfigUpdated) { "not blocked.\n" + "\n" + "See HIVE-4409 for more details."), - + METASTORE_THREAD_SERVICES("hive.metastore.thread.services", "", + "Comma-separated list of additional background services to run in the metastore. " + + "Each service should implement the MetaStoreThread interface."), NEWTABLEDEFAULTPARA("hive.table.parameters.default", "", "Default property values for newly created tables"), DDL_CTL_PARAMETERS_WHITELIST("hive.ddl.createtablelike.properties.whitelist", "", diff --git metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java index dde253a..4b1ebdc 100644 --- metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java +++ metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java @@ -6445,8 +6445,19 @@ public void run() { startCompactorWorkers(conf); startCompactorCleaner(conf); startHouseKeeperService(conf); + + String[] metastoreThreadServices = + HiveConf.getVar(conf, HiveConf.ConfVars.METASTORE_THREAD_SERVICES).split(","); + for (String service : metastoreThreadServices) { + String svc = service.trim(); + if (!svc.isEmpty()) { + LOG.info("Starting background metastore service " + svc); + MetaStoreThread mst = instantiateThread(svc); + initializeAndStartThread(mst, conf); + } + } } catch (Throwable e) { - LOG.error("Failure when starting the compactor, compactions may not happen, " + + LOG.error("Failure when starting background metastore threads, compactions may not happen and background services may not run, " + StringUtils.stringifyException(e)); } finally { startLock.unlock();