This is an automated email from the ASF dual-hosted git repository.

anishek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new 1fee5d7  HIVE-24363:Current order of transactional event listeners is 
prone to deadlock in backend DB connections(Pravin Kumar Sinha, reviewed by 
Aasha Medhi)
1fee5d7 is described below

commit 1fee5d755908dbf0a61706b0fb473be1e9396d5e
Author: Anishek Agarwal <anis...@gmail.com>
AuthorDate: Thu Nov 12 17:30:35 2020 +0530

    HIVE-24363:Current order of transactional event listeners is prone to 
deadlock in backend DB connections(Pravin Kumar Sinha, reviewed by Aasha Medhi)
---
 .../org/apache/hadoop/hive/metastore/conf/MetastoreConf.java     | 5 ++++-
 .../java/org/apache/hadoop/hive/metastore/HiveMetaStore.java     | 9 ++++++---
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git 
a/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/conf/MetastoreConf.java
 
b/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/conf/MetastoreConf.java
index acf5e25..f146fa3 100644
--- 
a/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/conf/MetastoreConf.java
+++ 
b/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/conf/MetastoreConf.java
@@ -1217,7 +1217,10 @@ public class MetastoreConf {
     TRANSACTIONAL_EVENT_LISTENERS("metastore.transactional.event.listeners",
         "hive.metastore.transactional.event.listeners", "",
         "A comma separated list of Java classes that implement the 
org.apache.riven.MetaStoreEventListener" +
-            " interface. Both the metastore event and corresponding listener 
method will be invoked in the same JDO transaction."),
+            " interface. Both the metastore event and corresponding listener 
method will be invoked in the same JDO transaction." +
+            " If org.apache.hive.hcatalog.listener.DbNotificationListener is 
configured along with other transactional event" +
+            " listener implementation classes, make sure 
org.apache.hive.hcatalog.listener.DbNotificationListener is placed at" +
+            " the end of the list."),
     TRUNCATE_ACID_USE_BASE("metastore.acid.truncate.usebase", 
"hive.metastore.acid.truncate.usebase", true,
         "If enabled, truncate for transactional tables will not delete the 
data directories,\n" +
         "rather create a new base directory with no datafiles."),
diff --git 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
index 825e1ea..addfeb9 100644
--- 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
+++ 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
@@ -571,9 +571,12 @@ public class HiveMetaStore extends ThriftHiveMetastore {
       listeners = 
MetaStoreServerUtils.getMetaStoreListeners(MetaStoreEventListener.class, conf,
           MetastoreConf.getVar(conf, ConfVars.EVENT_LISTENERS));
       listeners.add(new SessionPropertiesListener(conf));
-      transactionalListeners = 
MetaStoreServerUtils.getMetaStoreListeners(TransactionalMetaStoreEventListener.class,
-          conf, MetastoreConf.getVar(conf, 
ConfVars.TRANSACTIONAL_EVENT_LISTENERS));
-      transactionalListeners.add(new AcidEventListener(conf));
+      transactionalListeners = new ArrayList() {{
+          add(new AcidEventListener(conf));
+      }};
+      transactionalListeners.addAll(MetaStoreServerUtils.getMetaStoreListeners(
+              TransactionalMetaStoreEventListener.class, conf,
+              MetastoreConf.getVar(conf, 
ConfVars.TRANSACTIONAL_EVENT_LISTENERS)));
       if (Metrics.getRegistry() != null) {
         listeners.add(new HMSMetricsListener(conf));
       }

Reply via email to