I am running a JPA / Spring application that connects to multiple data sources enabled by XA on Microsoft SQL Server. Everything works very well, while global transactions start and roll back correctly as needed ...
But from time to time, JBoss becomes furious and begins to send the following warning every few seconds:
10:25:22,524 WARN [com.arjuna.ats.jta] (Periodic Recovery) ARJUNA016027: Local XARecoveryModule.xaRecovery got XA exception XAException.XAER_RMERR: javax.transaction.xa.XAException: The function RECOVER: failed. The status is: -3. Error: "*** SQLJDBC_XA DTC_ERROR Context: xa_recover, state=1, StatusCode:-3 (0xFFFFFFFD) ***" at com.microsoft.sqlserver.jdbc.SQLServerXAResource.DTC_XA_Interface(SQLServerXAResource.java:550) at com.microsoft.sqlserver.jdbc.SQLServerXAResource.recover(SQLServerXAResource.java:728) at org.jboss.jca.adapters.jdbc.xa.XAManagedConnection.recover(XAManagedConnection.java:358) at org.jboss.jca.core.tx.jbossts.XAResourceWrapperImpl.recover(XAResourceWrapperImpl.java:162) at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.xaRecovery(XARecoveryModule.java:503) [jbossjts-4.16.2.Final.jar:] at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.resourceInitiatedRecoveryForRecoveryHelpers(XARecoveryModule.java:471) [jbossjts-4.16.2.Final.jar:] at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.bottomUpRecovery(XARecoveryModule.java:385) [jbossjts-4.16.2.Final.jar:] at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.periodicWorkSecondPass(XARecoveryModule.java:166) [jbossjts-4.16.2.Final.jar:] at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWorkInternal(PeriodicRecovery.java:789) [jbossjts-4.16.2.Final.jar:] at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.run(PeriodicRecovery.java:371) [jbossjts-4.16.2.Final.jar:]
So far, I have not been able to decrypt what I expect to do here, and I'm a little worried that the application in this state will be released.
Can anyone shed light on why this is happening, how to solve it and avoid it?
EDIT:
In Windows logs, I could not find anything similar to a DTC error:
MSDTC started with the following settings:
Security Configuration (OFF = 0 and ON = 1): Allow Remote Admin = 0, Network Clients = 0, Transaction Manager Communications: Allow Inbound Transactions = 0, Allow Outbound Transactions = 0, Transaction Protocol (TIP) = 0, Enable XA Transactions = 1, Enable SNA LU 6.2 Transactions = 1, MSDTC Communication Security = Mutual Authentication Required, Account = NT AUTHORITY \ NetworkService, Firewall Exception Detected = 0
Installed transaction bridge = 0 Filtering recurring events = 1
Attempt to initialize Microsoft Distributed Transaction Coordinator (MS DTC). This is an informational message. No user action required.
The recovery of any suspicious distributed transactions involving Microsoft Distributed Transaction Coordinator (MS DTC) has been completed. This is an informational message. No user action required.
Recovery completed for MyDatabase (database identifier 20) after 1 second (analysis 589 ms, repeat 0 ms, cancel 398 ms.) This is only an informational message. No user action required.