Repository: hive Updated Branches: refs/heads/master 8028ce8a4 -> 598dcf40f
HIVE-19483: Metastore cleaner tasks that run periodically are created more than once (Jesus Camacho Rodriguez, reviewed by Alan Gates) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/e71c469c Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/e71c469c Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/e71c469c Branch: refs/heads/master Commit: e71c469c4f61a97dbfb8f9a6934fd92a6b38098c Parents: 8028ce8 Author: Jesus Camacho Rodriguez <[email protected]> Authored: Fri May 11 08:53:53 2018 -0700 Committer: Jesus Camacho Rodriguez <[email protected]> Committed: Fri May 11 08:53:53 2018 -0700 ---------------------------------------------------------------------- .../hadoop/hive/metastore/HiveMetaStore.java | 33 ++++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/e71c469c/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java index 269798c..a2b8743 100644 --- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java @@ -241,6 +241,11 @@ public class HiveMetaStore extends ThriftHiveMetastore { private final Configuration conf; // stores datastore (jpox) properties, // right now they come from jpox.properties + // Flag to control that always threads are initialized only once + // instead of multiple times + private final static AtomicBoolean alwaysThreadsInitialized = + new AtomicBoolean(false); + private static String currentUrl; private FileMetadataManager fileMetadataManager; private PartitionExpressionProxy expressionProxy; @@ -558,19 +563,21 @@ public class HiveMetaStore extends ThriftHiveMetastore { partitionValidationPattern = null; } - ThreadPool.initialize(conf); - Collection<String> taskNames = - MetastoreConf.getStringCollection(conf, ConfVars.TASK_THREADS_ALWAYS); - for (String taskName : taskNames) { - MetastoreTaskThread task = - JavaUtils.newInstance(JavaUtils.getClass(taskName, MetastoreTaskThread.class)); - task.setConf(conf); - long freq = task.runFrequency(TimeUnit.MILLISECONDS); - // For backwards compatibility, since some threads used to be hard coded but only run if - // frequency was > 0 - if (freq > 0) { - ThreadPool.getPool().scheduleAtFixedRate(task, freq, freq, TimeUnit.MILLISECONDS); - + // We only initialize once the tasks that need to be run periodically + if (alwaysThreadsInitialized.compareAndSet(false, true)) { + ThreadPool.initialize(conf); + Collection<String> taskNames = + MetastoreConf.getStringCollection(conf, ConfVars.TASK_THREADS_ALWAYS); + for (String taskName : taskNames) { + MetastoreTaskThread task = + JavaUtils.newInstance(JavaUtils.getClass(taskName, MetastoreTaskThread.class)); + task.setConf(conf); + long freq = task.runFrequency(TimeUnit.MILLISECONDS); + // For backwards compatibility, since some threads used to be hard coded but only run if + // frequency was > 0 + if (freq > 0) { + ThreadPool.getPool().scheduleAtFixedRate(task, freq, freq, TimeUnit.MILLISECONDS); + } } } expressionProxy = PartFilterExprUtil.createExpressionProxy(conf);
