From e3842c179c25bd6d5d1dabb5bc632b03650ce20d Mon Sep 17 00:00:00 2001 From: Denys Kuzmenko Date: Fri, 17 Oct 2025 13:24:28 +0300 Subject: [PATCH] Do not call getMSC from client itself, this can lead to deadlock --- .../hive/ql/metadata/SessionHiveMetaStoreClient.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java index 8af51d952009..954c9ef152ef 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/SessionHiveMetaStoreClient.java @@ -101,6 +101,7 @@ import org.apache.hadoop.hive.metastore.client.utils.HiveMetaStoreClientUtils; import org.apache.hadoop.hive.metastore.parser.ExpressionTree; import org.apache.hadoop.hive.metastore.partition.spec.PartitionSpecProxy; +import org.apache.hadoop.hive.metastore.txn.TxnCommonUtils; import org.apache.hadoop.hive.metastore.utils.MetaStoreServerUtils; import org.apache.hadoop.hive.metastore.utils.MetaStoreUtils; import org.apache.hadoop.hive.metastore.utils.SecurityUtils; @@ -2560,9 +2561,11 @@ private String getValidWriteIdList(String dbName, String tblName) { final String validWriteIds = Hive.get().getConf().get(ValidTxnWriteIdList.VALID_TABLES_WRITEIDS_KEY); final String fullTableName = TableName.getDbTable(dbName, tblName); - ValidTxnWriteIdList validTxnWriteIdList = (validWriteIds != null) ? + final ValidTxnWriteIdList validTxnWriteIdList = (validWriteIds != null) ? ValidTxnWriteIdList.fromValue(validWriteIds) : - SessionState.get().getTxnMgr().getValidWriteIds(ImmutableList.of(fullTableName), validTxnsList); + TxnCommonUtils.createValidTxnWriteIdList( + SessionState.get().getTxnMgr().getCurrentTxnId(), + getValidWriteIds(ImmutableList.of(fullTableName), validTxnsList)); ValidWriteIdList writeIdList = validTxnWriteIdList.getTableValidWriteIdList(fullTableName); return (writeIdList != null) ? writeIdList.toString() : null;