错误 - org.jboss.resource.connectionmanager.JBossLocalXAException:尝试在旧的 tx 不完整时启动新的 tx

问题描述 投票:0回答:1

我们的 Java 应用程序在 RHEL 8.5 操作系统上运行。而我们使用的是4.2.1 GA的JBoss版本。我们的应用程序在几个月内运行良好。最近,我们反复遇到以下问题,在 jboss.log 文件中占用了将近 5 GB,我们正在努力寻找根本原因。

WARN  [JDBCSupport] SQLException caught, SQLState null code:0- assuming deadlock detected, try:18
org.jboss.util.NestedSQLException: Could not enlist in transaction on entering meta-aware object!; - nested throwable: (javax.transaction.SystemException: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: 6a288574:63f3:63d001d8:7c1fff status: ActionStatus.ABORT_ONLY >); - nested throwable: (org.jboss.resource.JBossResourceException: Could not enlist in transaction on entering meta-aware object!; - nested throwable: (javax.transaction.SystemException: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: 6a288574:63f3:63d001d8:7c1fff status: ActionStatus.ABORT_ONLY >))
        at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:94)
        at org.jboss.messaging.core.impl.JDBCSupport$JDBCTxRunner.execute(JDBCSupport.java:383)
        at org.jboss.messaging.core.impl.JDBCSupport$JDBCTxRunner.executeWithRetry(JDBCSupport.java:407)
        at org.jboss.messaging.core.impl.JDBCPersistenceManager.reapUnreferencedMessages(JDBCPersistenceManager.java:2357)
        at org.jboss.messaging.core.impl.JDBCPersistenceManager.access$1000(JDBCPersistenceManager.java:78)
        at org.jboss.messaging.core.impl.JDBCPersistenceManager$Reaper.run(JDBCPersistenceManager.java:2381)
        at java.util.TimerThread.mainLoop(Timer.java:555)
        at java.util.TimerThread.run(Timer.java:505)
Caused by: org.jboss.resource.JBossResourceException: Could not enlist in transaction on entering meta-aware object!; - nested throwable: (javax.transaction.SystemException: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: 6a288574:63f3:63d001d8:7c1fff status: ActionStatus.ABORT_ONLY >)
        at org.jboss.resource.connectionmanager.TxConnectionManager.managedConnectionReconnected(TxConnectionManager.java:343)
        at org.jboss.resource.connectionmanager.BaseConnectionManager2.reconnectManagedConnection(BaseConnectionManager2.java:518)
        at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:399)
        at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:842)
        at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:88)
        ... 7 more
Caused by: javax.transaction.SystemException: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: 6a288574:63f3:63d001d8:7c1fff status: ActionStatus.ABORT_ONLY >
        at org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener$TransactionSynchronization.checkEnlisted(TxConnectionManager.java:744)
        at org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener.enlist(TxConnectionManager.java:577)
        at org.jboss.resource.connectionmanager.TxConnectionManager.managedConnectionReconnected(TxConnectionManager.java:337)
        ... 11 more
05:51:09,339 WARN  [JDBCSupport] Trying again after a pause
05:51:09,531 WARN  [loggerI18N] [com.arjuna.ats.internal.jta.transaction.arjunacore.enliststarterror] [com.arjuna.ats.internal.jta.transaction.arjunacore.enliststarterror] TransactionImple.enlistResource - XAResource.start returned: XAException.XAER_PROTO for < 131075, 31, 29, 1-6a288574:63f3:63d001d8:7c20036a288574:63f3:63d001d8:7c2006^
 ERROR [STDERR] org.jboss.resource.connectionmanager.JBossLocalXAException: Trying to start a new tx when old is not complete! old: < 131075, 31, 29, 1-6a288574:63f3:63d001d8:7bf8476a288574:63f3:63d001d8:7bf84a^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ >, new < 131075, 31, 29, 1-6a288574:63f3:63d001d8:7c20036a288574:63f3:63d001d8:7c2006^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ >, flags 0
05:51:09,531 ERROR [STDERR]     at org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource.start(TxConnectionManager.java:886)
05:51:09,531 ERROR [STDERR]     at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.enlistResource(TransactionImple.java:774)
05:51:09,531 ERROR [STDERR]     at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.enlistResource(TransactionImple.java:497)
05:51:09,531 ERROR [STDERR]     at org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener$TransactionSynchronization.enlist(TxConnectionManager.java:773)
05:51:09,531 ERROR [STDERR]     at org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener.enlist(TxConnectionManager.java:564)
05:51:09,531 ERROR [STDERR]     at org.jboss.resource.connectionmanager.TxConnectionManager.managedConnectionReconnected(TxConnectionManager.java:337)
05:51:09,531 ERROR [STDERR]     at org.jboss.resource.connectionmanager.BaseConnectionManager2.reconnectManagedConnection(BaseConnectionManager2.java:518)
05:51:09,531 ERROR [STDERR]     at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:399)
05:51:09,531 ERROR [STDERR]     at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:842)
05:51:09,531 ERROR [STDERR]     at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:88)
05:51:09,531 ERROR [STDERR]     at org.jboss.messaging.core.impl.JDBCSupport$JDBCTxRunner.execute(JDBCSupport.java:383)
05:51:09,531 ERROR [STDERR]     at org.jboss.messaging.core.impl.JDBCSupport$JDBCTxRunner.executeWithRetry(JDBCSupport.java:407)
05:51:09,531 ERROR [STDERR]     at org.jboss.messaging.core.impl.JDBCPersistenceManager.reapUnreferencedMessages(JDBCPersistenceManager.java:2357)
05:51:09,531 ERROR [STDERR]     at org.jboss.messaging.core.impl.JDBCPersistenceManager.access$1000(JDBCPersistenceManager.java:78)
05:51:09,531 ERROR [STDERR]     at org.jboss.messaging.core.impl.JDBCPersistenceManager$Reaper.run(JDBCPersistenceManager.java:2381)
05:51:09,531 ERROR [STDERR]     at java.util.TimerThread.mainLoop(Timer.java:555)
05:51:09,531 ERROR [STDERR]     at java.util.TimerThread.run(Timer.java:505)




 ERROR [JDBCSupport] Retried 25 times, now giving up
05:51:06,096 ERROR [JDBCPersistenceManager] Failed to reap
java.lang.IllegalStateException: Failed to excecute transaction
        at org.jboss.messaging.core.impl.JDBCSupport$JDBCTxRunner.executeWithRetry(JDBCSupport.java:423)
        at org.jboss.messaging.core.impl.JDBCPersistenceManager.reapUnreferencedMessages(JDBCPersistenceManager.java:2357)
        at org.jboss.messaging.core.impl.JDBCPersistenceManager.access$1000(JDBCPersistenceManager.java:78)
        at org.jboss.messaging.core.impl.JDBCPersistenceManager$Reaper.run(JDBCPersistenceManager.java:2381)
        at java.util.TimerThread.mainLoop(Timer.java:555)
        at java.util.TimerThread.run(Timer.java:505)
        

请让我们清楚以下问题,

  1. 为什么这个错误反复出现?
  2. 在什么情况下,会出现上面的错误?
  3. 如何防止这个错误?
java sql jboss
1个回答
0
投票

我对你的问题感到困惑。您的问题发生在 JBoss Messaging 上,但 JBoss Messaging 未包含在 JBoss 4.2.1 GA 中。

在任何情况下,您的 JBoss Messaging(JMS 服务)都无法正常工作。最有可能的是,它完全离线。我建议从数据库中清除所有 JBoss Messaging 表并从一个干净的数据库开始。

在你的服务器

deploy/messaging
目录中,应该有一个
*-persistence-service.xml
文件。这将配置数据库存储。如果
CreateTablesOnStartup
设置为
true
,那么 JBoss Messaging 将自动创建表。也许只是重命名现有表,或者根据需要进行备份。

*-persistence-service.xml
文件将包含数据库的连接详细信息,表将被命名为
JBM
.

© www.soinside.com 2019 - 2024. All rights reserved.