[
https://issues.apache.org/jira/browse/HIVE-28669?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Zhihua Deng updated HIVE-28669:
-------------------------------
Component/s: Standalone Metastore
> Deadlock found when TxnStoreMutex trying to acquireLock
> -------------------------------------------------------
>
> Key: HIVE-28669
> URL: https://issues.apache.org/jira/browse/HIVE-28669
> Project: Hive
> Issue Type: Bug
> Components: Standalone Metastore
> Reporter: Zhihua Deng
> Assignee: Zhihua Deng
> Priority: Major
> Labels: hive-4.1.0-must, pull-request-available
> Fix For: 4.1.0
>
>
> Build from the latest master, use the MySQL as back db to run the HMS. After
> a while, in HMS logs, we can see the deadlock exception:
> {noformat}
> 2024-12-16T09:21:39,677 ERROR [Metastore Scheduled Worker 13]
> service.AcidHouseKeeperService: Unexpected exception in thread: Metastore
> Scheduled Worker 13, message: Unable to lock HouseKeeper due to:
> PreparedStatementCallback; SQL [INSERT INTO "AUX_TABLE" ("MT_KEY1",
> "MT_KEY2") VALUES(?, 0)]; (conn=1315) Deadlock found when trying to get lock;
> try restarting transaction; nested exception is
> java.sql.SQLTransactionRollbackException: (conn=1315) Deadlock found when
> trying to get lock; try restarting transaction
> java.lang.RuntimeException: Unable to lock HouseKeeper due to:
> PreparedStatementCallback; SQL [INSERT INTO "AUX_TABLE" ("MT_KEY1",
> "MT_KEY2") VALUES(?, 0)]; (conn=1315) Deadlock found when trying to get lock;
> try restarting transaction; nested exception is
> java.sql.SQLTransactionRollbackException: (conn=1315) Deadlock found when
> trying to get lock; try restarting transaction
> at
> org.apache.hadoop.hive.metastore.txn.TxnStoreMutex.acquireLock(TxnStoreMutex.java:85)
> ~[hive-exec-4.1.0-SNAPSHOT.jar:4.1.0-SNAPSHOT]
> at
> org.apache.hadoop.hive.metastore.txn.service.AcidHouseKeeperService.run(AcidHouseKeeperService.java:83)
> ~[hive-exec-4.1.0-SNAPSHOT.jar:4.1.0-SNAPSHOT]
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> ~[?:1.8.0_292]
> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
> ~[?:1.8.0_292]
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
> ~[?:1.8.0_292]
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
> ~[?:1.8.0_292]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> ~[?:1.8.0_292]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> ~[?:1.8.0_292]
> at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_292]
> Caused by: org.springframework.dao.DeadlockLoserDataAccessException:
> PreparedStatementCallback; SQL [INSERT INTO "AUX_TABLE" ("MT_KEY1",
> "MT_KEY2") VALUES(?, 0)]; (conn=1315) Deadlock found when trying to get lock;
> try restarting transaction; nested exception is
> java.sql.SQLTransactionRollbackException: (conn=1315) Deadlock found when
> trying to get lock; try restarting transaction
> at
> org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:268)
> ~[spring-jdbc-5.3.39.jar:5.3.39]
> at
> org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
> ~[spring-jdbc-5.3.39.jar:5.3.39]
> at
> org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1575)
> ~[spring-jdbc-5.3.39.jar:5.3.39]
> at
> org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:667)
> ~[spring-jdbc-5.3.39.jar:5.3.39]
> at
> org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:960)
> ~[spring-jdbc-5.3.39.jar:5.3.39]
> at
> org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:981)
> ~[spring-jdbc-5.3.39.jar:5.3.39]
> at
> org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:331)
> ~[spring-jdbc-5.3.39.jar:5.3.39]
> at
> org.apache.hadoop.hive.metastore.txn.TxnStoreMutex.acquireLock(TxnStoreMutex.java:81)
> ~[hive-exec-4.1.0-SNAPSHOT.jar:4.1.0-SNAPSHOT]
> ... 8 more
> Caused by: java.sql.SQLTransactionRollbackException: (conn=1315) Deadlock
> found when trying to get lock; try restarting transaction
> at
> org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:245)
> ~[mariadb-java-client-2.5.0.jar:?]
> at
> org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:164)
> ~[mariadb-java-client-2.5.0.jar:?]
> at
> org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:244)
> ~[mariadb-java-client-2.5.0.jar:?]
> at
> org.mariadb.jdbc.ClientSidePreparedStatement.executeInternal(ClientSidePreparedStatement.java:225)
> ~[mariadb-java-client-2.5.0.jar:?]
> at
> org.mariadb.jdbc.ClientSidePreparedStatement.execute(ClientSidePreparedStatement.java:145)
> ~[mariadb-java-client-2.5.0.jar:?]
> at
> org.mariadb.jdbc.ClientSidePreparedStatement.executeUpdate(ClientSidePreparedStatement.java:176)
> ~[mariadb-java-client-2.5.0.jar:?]
> at
> org.apache.hive.com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
> ~[hive-exec-4.1.0-SNAPSHOT.jar:4.1.0-SNAPSHOT]
> at
> org.apache.hive.com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
> ~[hive-exec-4.1.0-SNAPSHOT.jar:4.1.0-SNAPSHOT]
> at
> org.springframework.jdbc.core.JdbcTemplate.lambda$update$2(JdbcTemplate.java:965)
> ~[spring-jdbc-5.3.39.jar:5.3.39]2024-12-16T09:21:39,677 ERROR [Metastore
> Scheduled Worker 13] service.AcidHouseKeeperService: Unexpected exception in
> thread: Metastore Scheduled Worker 13, message: Unable to lock HouseKeeper
> due to: PreparedStatementCallback; SQL [INSERT INTO "AUX_TABLE" ("MT_KEY1",
> "MT_KEY2") VALUES(?, 0)]; (conn=1315) Deadlock found when trying to get lock;
> try restarting transaction; nested exception is
> java.sql.SQLTransactionRollbackException: (conn=1315) Deadlock found when
> trying to get lock; try restarting transaction
> java.lang.RuntimeException: Unable to lock HouseKeeper due to:
> PreparedStatementCallback; SQL [INSERT INTO "AUX_TABLE" ("MT_KEY1",
> "MT_KEY2") VALUES(?, 0)]; (conn=1315) Deadlock found when trying to get lock;
> try restarting transaction; nested exception is
> java.sql.SQLTransactionRollbackException: (conn=1315) Deadlock found when
> trying to get lock; try restarting transaction
> at
> org.apache.hadoop.hive.metastore.txn.TxnStoreMutex.acquireLock(TxnStoreMutex.java:85)
> ~[hive-exec-4.1.0-SNAPSHOT.jar:4.1.0-SNAPSHOT]
> at
> org.apache.hadoop.hive.metastore.txn.service.AcidHouseKeeperService.run(AcidHouseKeeperService.java:83)
> ~[hive-exec-4.1.0-SNAPSHOT.jar:4.1.0-SNAPSHOT]
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> ~[?:1.8.0_292]
> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
> ~[?:1.8.0_292]
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
> ~[?:1.8.0_292]
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
> ~[?:1.8.0_292]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> ~[?:1.8.0_292]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> ~[?:1.8.0_292]
> at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_292]
> Caused by: org.springframework.dao.DeadlockLoserDataAccessException:
> PreparedStatementCallback; SQL [INSERT INTO "AUX_TABLE" ("MT_KEY1",
> "MT_KEY2") VALUES(?, 0)]; (conn=1315) Deadlock found when trying to get lock;
> try restarting transaction; nested exception is
> java.sql.SQLTransactionRollbackException: (conn=1315) Deadlock found when
> trying to get lock; try restarting transaction
> at
> org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:268)
> ~[spring-jdbc-5.3.39.jar:5.3.39]
> at
> org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
> ~[spring-jdbc-5.3.39.jar:5.3.39]
> at
> org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1575)
> ~[spring-jdbc-5.3.39.jar:5.3.39]
> at
> org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:667)
> ~[spring-jdbc-5.3.39.jar:5.3.39]
> at
> org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:960)
> ~[spring-jdbc-5.3.39.jar:5.3.39]
> at
> org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:981)
> ~[spring-jdbc-5.3.39.jar:5.3.39]
> at
> org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:331)
> ~[spring-jdbc-5.3.39.jar:5.3.39]
> at
> org.apache.hadoop.hive.metastore.txn.TxnStoreMutex.acquireLock(TxnStoreMutex.java:81)
> ~[hive-exec-4.1.0-SNAPSHOT.jar:4.1.0-SNAPSHOT]
> ... 8 more
> Caused by: java.sql.SQLTransactionRollbackException: (conn=1315) Deadlock
> found when trying to get lock; try restarting transaction
> at
> org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:245)
> ~[mariadb-java-client-2.5.0.jar:?]
> at
> org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:164)
> ~[mariadb-java-client-2.5.0.jar:?]
> at
> org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:244)
> ~[mariadb-java-client-2.5.0.jar:?]
> at
> org.mariadb.jdbc.ClientSidePreparedStatement.executeInternal(ClientSidePreparedStatement.java:225)
> ~[mariadb-java-client-2.5.0.jar:?]
> at
> org.mariadb.jdbc.ClientSidePreparedStatement.execute(ClientSidePreparedStatement.java:145)
> ~[mariadb-java-client-2.5.0.jar:?]
> at
> org.mariadb.jdbc.ClientSidePreparedStatement.executeUpdate(ClientSidePreparedStatement.java:176)
> ~[mariadb-java-client-2.5.0.jar:?]
> at
> org.apache.hive.com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
> ~[hive-exec-4.1.0-SNAPSHOT.jar:4.1.0-SNAPSHOT]
> at
> org.apache.hive.com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
> ~[hive-exec-4.1.0-SNAPSHOT.jar:4.1.0-SNAPSHOT]
> at
> org.springframework.jdbc.core.JdbcTemplate.lambda$update$2(JdbcTemplate.java:965)
> ~[spring-jdbc-5.3.39.jar:5.3.39]
> ...{noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)