【发布时间】:2025-12-27 12:05:06
【问题描述】:
我有使用 Atomikos 作为事务管理器的 Spring Boot 应用程序,我看到了这个日志:
错误:标识符为“1096044365_MTcyLjE3LjAuMy50bTAwNDAyMDAwMDE=_MTcyLjE3LjAuMy50bTQwMg==”的准备好的事务不存在
连续打印。
阅读 Atomikos 文档后,我了解到 Atomikos 有一些崩溃恢复机制,我遵循了这个http://fogbugz.atomikos.com/default4343.html?community.6.1918.14,但它并没有解决我的问题。
我的问题是:为什么 Atomikos 会尝试永远清理 tx?当没有机会让它提交状态时。
下面是堆栈跟踪:
org.postgresql.xa.PGXAException:回滚准备好的事务时出错 在 org.postgresql.xa.PGXAConnection.rollback(PGXAConnection.java:419) ~[postgresql-9.1-901-1.jdbc4.jar!/:na] 在 com.atomikos.datasource.xa.XAResourceTransaction.rollback(XAResourceTransaction.java:636) ~[transactions-jta-3.9.3.jar!/:na] 在 com.atomikos.icatch.imp.RollbackMessage.send(RollbackMessage.java:70) [transactions-3.9.3.jar!/:na] 在 com.atomikos.icatch.imp.PropagationMessage.submit(PropagationMessage.java:83) [transactions-3.9.3.jar!/:na] 在 com.atomikos.icatch.imp.Propagator$PropagatorThread.run(Propagator.java:79) [transactions-3.9.3.jar!/:na] 在 com.atomikos.icatch.imp.Propagator.submitPropagationMessage(Propagator.java:58) [transactions-3.9.3.jar!/:na] 在 com.atomikos.icatch.imp.HeurHazardStateHandler.onTimeout(HeurHazardStateHandler.java:135) [transactions-3.9.3.jar!/:na] 在 com.atomikos.icatch.imp.CoordinatorImp.alarm(CoordinatorImp.java:933) [transactions-3.9.3.jar!/:na] 在 com.atomikos.timing.PooledAlarmTimer.notifyListeners(PooledAlarmTimer.java:112) [atomikos-util-3.9.3.jar!/:na] 在 com.atomikos.timing.PooledAlarmTimer.run(PooledAlarmTimer.java:99) [atomikos-util-3.9.3.jar!/:na] 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_151] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_151] 在 java.lang.Thread.run(Thread.java:748) [na:1.8.0_151] 引起:org.postgresql.util.PSQLException:错误:准备好的事务,标识符为“1096044365_MTcyLjE3LjAuMy50bTAwNDAyMDAwMDE=_MTcyLjE3LjAuMy50bTQwMg==”不存在 在 org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2103) ~[postgresql-9.1-901-1.jdbc4.jar!/:na] 在 org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836) ~[postgresql-9.1-901-1.jdbc4.jar!/:na] 在 org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257) ~[postgresql-9.1-901-1.jdbc4.jar!/:na] 在 org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512) ~[postgresql-9.1-901-1.jdbc4.jar!/:na] 在 org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:374) ~[postgresql-9.1-901-1.jdbc4.jar!/:na] 在 org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:302) ~[postgresql-9.1-901-1.jdbc4.jar!/:na] 在 org.postgresql.xa.PGXAConnection.rollback(PGXAConnection.java:409) ~[postgresql-9.1-901-1.jdbc4.jar!/:na] ...省略了12个常用框架
如何停止这种重试机制
更新到 4.0.6 后再次发生这种情况
2018年1月22日20:42:52.247 ERROR [的requestId:] 1 --- [Atomikos公司:51] c.a.datasource.xa.XAResourceTransaction:XAResourceTransaction的启发式终止:3137322E31372E302E342E746D313531363637303131363034343030383435:3137322E31372E302E342E746D383435与状态HEUR_HAZARD 2018-01-22 20:42:52.247 错误 [RequestId:] 1 --- [Atomikos:51] com.atomikos.icatch.imp.CoordinatorImp:协调器 172.17.0.4.tm151667011604400845 的本地启发式终止,状态为 HEUR_HAZARD 2018-01-22 20:42:52.247 错误 [RequestId:] 1 --- [Atomikos:51] com.atomikos.publish.EventPublisher:事务 172.17.0.4.tm151667011604400845 已损坏 - 检查 https://www.atomikos.com/Documentation/HowToHandleHeuristics 了解更多信息 2018年1月22日20:42:52.420警告[的requestId:] 1 --- [Atomikos公司:51] c.a.datasource.xa.XAResourceTransaction:XA资源'Postgres的:回滚为XID '3137322E31372E302E342E746D313531363637303131363034343030383435:3137322E31372E302E342E746D383435' 升高-3:所述XA 资源检测到内部错误
org.postgresql.xa.PGXAException:回滚准备好的事务时出错 在 org.postgresql.xa.PGXAConnection.rollback(PGXAConnection.java:419) ~[postgresql-9.1-901-1.jdbc4.jar!/:na] 在 com.atomikos.datasource.xa.XAResourceTransaction.rollback(XAResourceTransaction.java:460) ~[transactions-jta-4.0.6.jar!/:na] 在 com.atomikos.icatch.imp.RollbackMessage.send(RollbackMessage.java:47) [transactions-4.0.6.jar!/:na] 在 com.atomikos.icatch.imp.RollbackMessage.send(RollbackMessage.java:20) [transactions-4.0.6.jar!/:na] 在 com.atomikos.icatch.imp.PropagationMessage.submit(PropagationMessage.java:67) [transactions-4.0.6.jar!/:na] 在 com.atomikos.icatch.imp.Propagator$PropagatorThread.run(Propagator.java:63) [transactions-4.0.6.jar!/:na] 在 com.atomikos.icatch.imp.Propagator.submitPropagationMessage(Propagator.java:42) [transactions-4.0.6.jar!/:na] 在 com.atomikos.icatch.imp.HeurHazardStateHandler.onTimeout(HeurHazardStateHandler.java:75) [transactions-4.0.6.jar!/:na] 在 com.atomikos.icatch.imp.CoordinatorImp.alarm(CoordinatorImp.java:650) [transactions-4.0.6.jar!/:na] 在 com.atomikos.timing.PooledAlarmTimer.notifyListeners(PooledAlarmTimer.java:95) [atomikos-util-4.0.6.jar!/:na] 在 com.atomikos.timing.PooledAlarmTimer.run(PooledAlarmTimer.java:82) [atomikos-util-4.0.6.jar!/:na] 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_151] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_151] 在 java.lang.Thread.run(Thread.java:748) [na:1.8.0_151] 引起:org.postgresql.util.PSQLException:错误:准备好的事务与标识符“1096044365_MTcyLjE3LjAuNC50bTE1MTY2NzAxMTYwNDQwMDg0NQ==_MTcyLjE3LjAuNC50bTg0NQ==”不存在 在 org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2103) ~[postgresql-9.1-901-1.jdbc4.jar!/:na] 在 org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836) ~[postgresql-9.1-901-1.jdbc4.jar!/:na] 在 org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257) ~[postgresql-9.1-901-1.jdbc4.jar!/:na] 在 org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512) ~[postgresql-9.1-901-1.jdbc4.jar!/:na] 在 org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:374) ~[postgresql-9.1-901-1.jdbc4.jar!/:na] 在 org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:302) ~[postgresql-9.1-901-1.jdbc4.jar!/:na] 在 org.postgresql.xa.PGXAConnection.rollback(PGXAConnection.java:409) ~[postgresql-9.1-901-1.jdbc4.jar!/:na] ...省略了13个常用框架
【问题讨论】:
标签: spring spring-boot spring-transactions jta atomikos