[
https://issues.jboss.org/browse/JBTM-3153?page=com.atlassian.jira.plugin....
]
Ondrej Chaloupka updated JBTM-3153:
-----------------------------------
Description:
There is a possible race condition at the test {{SipleIsolatedServers}}
(
https://github.com/jbosstm/narayana/blob/5.9.5.Final/ArjunaJTS/integratio...)
where {{while loop}} can be infinite as the counter never gets expected number of {{2}}.
This can happen in case of the recovery fails with some unexpected exception/error. For
example the CI experienced {{java.lang.LinkageError}} on JDK11.
(The exact reason for the linkage error is for further investigation. But the test should
be fixed.)
[1]
{code}
[RecMan1000] ProxyXAResource (1000:2000) XA_RECOVER [XAResource.TMSTARTRSCAN]
Exception in thread "RecMan1000" java.lang.LinkageError: loader
com.arjuna.ats.jta.distributed.server.IsolatableServersClassLoader @72503b19 (instance of
com.arjuna.ats.jta.distributed.server.IsolatableServersClassLoader, child of 'app'
jdk.internal.loader.ClassLoaders$AppClassLoader) attempted duplicate class definition for
com.arjuna.ats.internal.jta.transaction.arjunacore.jca.SubordinationManager.
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:877)
at
com.arjuna.ats.jta.distributed.server.IsolatableServersClassLoader.loadClass(IsolatableServersClassLoader.java:125)
at
com.arjuna.ats.jta.distributed.server.IsolatableServersClassLoader.loadClass(IsolatableServersClassLoader.java:103)
at
com.arjuna.ats.jta.distributed.server.impl.RemoteServerImpl.recoverFor(RemoteServerImpl.java:111)
at
com.arjuna.ats.jta.distributed.server.impl.ProxyXAResource.recover(ProxyXAResource.java:174)
at
com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.xaRecoveryFirstPass(XARecoveryModule.java:634)
at
com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.periodicWorkFirstPass(XARecoveryModule.java:226)
at
com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.getNewXAResource(XARecoveryModule.java:329)
at
com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.getNewXAResource(XARecoveryModule.java:368)
at
com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.getNewXAResource(XAResourceRecord.java:1254)
at
com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.restore_state(XAResourceRecord.java:1005)
at com.arjuna.ats.arjuna.coordinator.BasicAction.restore_state(BasicAction.java:1120)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.jca.SubordinateAtomicAction.restore_state(SubordinateAtomicAction.java:212)
at com.arjuna.ats.arjuna.coordinator.BasicAction.activate(BasicAction.java:490)
at com.arjuna.ats.arjuna.coordinator.BasicAction.activate(BasicAction.java:453)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.jca.SubordinateAtomicAction.<init>(SubordinateAtomicAction.java:75)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.jca.TransactionImple.<init>(TransactionImple.java:71)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.jca.TransactionImporterImple.recoverTransaction(TransactionImporterImple.java:124)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.jca.TransactionImporterImple.recoverTransaction(TransactionImporterImple.java:52)
at
com.arjuna.ats.internal.jta.recovery.arjunacore.SubordinateAtomicActionRecoveryModule.periodicWorkFirstPass(SubordinateAtomicActionRecoveryModule.java:74)
at
com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWorkInternal(PeriodicRecovery.java:770)
at
com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWork(PeriodicRecovery.java:493)
at
com.arjuna.ats.internal.arjuna.recovery.RecoveryManagerImple.scan(RecoveryManagerImple.java:138)
at com.arjuna.ats.arjuna.recovery.RecoveryManager.scan(RecoveryManager.java:161)
at
com.arjuna.ats.jta.distributed.server.impl.ServerImpl.doRecoveryManagerScan(ServerImpl.java:197)
at
com.arjuna.ats.jta.distributed.SimpleIsolatedServers$4.run(SimpleIsolatedServers.java:299)
at java.base/java.lang.Thread.run(Thread.java:834)
{code}
was:
There is a possible race condition at the test `SipleIsolatedServers`
(
https://github.com/jbosstm/narayana/blob/5.9.5.Final/ArjunaJTS/integratio...)
where `while loop` can be infinite as the counter never gets expected number of `2`.
This can happen in case of the recovery fails with some unexpected exception/error. For
example the CI experienced `java.lang.LinkageError` on JDK11.
(The exact reason for the linkage error is for further investigation. But the test should
be fixed.)
[1]
```
[RecMan1000] ProxyXAResource (1000:2000) XA_RECOVER [XAResource.TMSTARTRSCAN]
Exception in thread "RecMan1000" java.lang.LinkageError: loader
com.arjuna.ats.jta.distributed.server.IsolatableServersClassLoader @72503b19 (instance of
com.arjuna.ats.jta.distributed.server.IsolatableServersClassLoader, child of 'app'
jdk.internal.loader.ClassLoaders$AppClassLoader) attempted duplicate class definition for
com.arjuna.ats.internal.jta.transaction.arjunacore.jca.SubordinationManager.
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:877)
at
com.arjuna.ats.jta.distributed.server.IsolatableServersClassLoader.loadClass(IsolatableServersClassLoader.java:125)
at
com.arjuna.ats.jta.distributed.server.IsolatableServersClassLoader.loadClass(IsolatableServersClassLoader.java:103)
at
com.arjuna.ats.jta.distributed.server.impl.RemoteServerImpl.recoverFor(RemoteServerImpl.java:111)
at
com.arjuna.ats.jta.distributed.server.impl.ProxyXAResource.recover(ProxyXAResource.java:174)
at
com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.xaRecoveryFirstPass(XARecoveryModule.java:634)
at
com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.periodicWorkFirstPass(XARecoveryModule.java:226)
at
com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.getNewXAResource(XARecoveryModule.java:329)
at
com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.getNewXAResource(XARecoveryModule.java:368)
at
com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.getNewXAResource(XAResourceRecord.java:1254)
at
com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.restore_state(XAResourceRecord.java:1005)
at com.arjuna.ats.arjuna.coordinator.BasicAction.restore_state(BasicAction.java:1120)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.jca.SubordinateAtomicAction.restore_state(SubordinateAtomicAction.java:212)
at com.arjuna.ats.arjuna.coordinator.BasicAction.activate(BasicAction.java:490)
at com.arjuna.ats.arjuna.coordinator.BasicAction.activate(BasicAction.java:453)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.jca.SubordinateAtomicAction.<init>(SubordinateAtomicAction.java:75)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.jca.TransactionImple.<init>(TransactionImple.java:71)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.jca.TransactionImporterImple.recoverTransaction(TransactionImporterImple.java:124)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.jca.TransactionImporterImple.recoverTransaction(TransactionImporterImple.java:52)
at
com.arjuna.ats.internal.jta.recovery.arjunacore.SubordinateAtomicActionRecoveryModule.periodicWorkFirstPass(SubordinateAtomicActionRecoveryModule.java:74)
at
com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWorkInternal(PeriodicRecovery.java:770)
at
com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWork(PeriodicRecovery.java:493)
at
com.arjuna.ats.internal.arjuna.recovery.RecoveryManagerImple.scan(RecoveryManagerImple.java:138)
at com.arjuna.ats.arjuna.recovery.RecoveryManager.scan(RecoveryManager.java:161)
at
com.arjuna.ats.jta.distributed.server.impl.ServerImpl.doRecoveryManagerScan(ServerImpl.java:197)
at
com.arjuna.ats.jta.distributed.SimpleIsolatedServers$4.run(SimpleIsolatedServers.java:299)
at java.base/java.lang.Thread.run(Thread.java:834)
```
Possible race condition at jts integration test
com.arjuna.ats.jta.distributed.SimpleIsolatedServers
----------------------------------------------------------------------------------------------------
Key: JBTM-3153
URL:
https://issues.jboss.org/browse/JBTM-3153
Project: JBoss Transaction Manager
Issue Type: Bug
Components: Testing
Affects Versions: 5.9.5.Final
Reporter: Ondrej Chaloupka
Assignee: Ondrej Chaloupka
Priority: Major
There is a possible race condition at the test {{SipleIsolatedServers}}
(
https://github.com/jbosstm/narayana/blob/5.9.5.Final/ArjunaJTS/integratio...)
where {{while loop}} can be infinite as the counter never gets expected number of {{2}}.
This can happen in case of the recovery fails with some unexpected exception/error. For
example the CI experienced {{java.lang.LinkageError}} on JDK11.
(The exact reason for the linkage error is for further investigation. But the test should
be fixed.)
[1]
{code}
[RecMan1000] ProxyXAResource (1000:2000) XA_RECOVER [XAResource.TMSTARTRSCAN]
Exception in thread "RecMan1000" java.lang.LinkageError: loader
com.arjuna.ats.jta.distributed.server.IsolatableServersClassLoader @72503b19 (instance of
com.arjuna.ats.jta.distributed.server.IsolatableServersClassLoader, child of 'app'
jdk.internal.loader.ClassLoaders$AppClassLoader) attempted duplicate class definition for
com.arjuna.ats.internal.jta.transaction.arjunacore.jca.SubordinationManager.
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:877)
at
com.arjuna.ats.jta.distributed.server.IsolatableServersClassLoader.loadClass(IsolatableServersClassLoader.java:125)
at
com.arjuna.ats.jta.distributed.server.IsolatableServersClassLoader.loadClass(IsolatableServersClassLoader.java:103)
at
com.arjuna.ats.jta.distributed.server.impl.RemoteServerImpl.recoverFor(RemoteServerImpl.java:111)
at
com.arjuna.ats.jta.distributed.server.impl.ProxyXAResource.recover(ProxyXAResource.java:174)
at
com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.xaRecoveryFirstPass(XARecoveryModule.java:634)
at
com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.periodicWorkFirstPass(XARecoveryModule.java:226)
at
com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.getNewXAResource(XARecoveryModule.java:329)
at
com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.getNewXAResource(XARecoveryModule.java:368)
at
com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.getNewXAResource(XAResourceRecord.java:1254)
at
com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.restore_state(XAResourceRecord.java:1005)
at com.arjuna.ats.arjuna.coordinator.BasicAction.restore_state(BasicAction.java:1120)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.jca.SubordinateAtomicAction.restore_state(SubordinateAtomicAction.java:212)
at com.arjuna.ats.arjuna.coordinator.BasicAction.activate(BasicAction.java:490)
at com.arjuna.ats.arjuna.coordinator.BasicAction.activate(BasicAction.java:453)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.jca.SubordinateAtomicAction.<init>(SubordinateAtomicAction.java:75)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.jca.TransactionImple.<init>(TransactionImple.java:71)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.jca.TransactionImporterImple.recoverTransaction(TransactionImporterImple.java:124)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.jca.TransactionImporterImple.recoverTransaction(TransactionImporterImple.java:52)
at
com.arjuna.ats.internal.jta.recovery.arjunacore.SubordinateAtomicActionRecoveryModule.periodicWorkFirstPass(SubordinateAtomicActionRecoveryModule.java:74)
at
com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWorkInternal(PeriodicRecovery.java:770)
at
com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWork(PeriodicRecovery.java:493)
at
com.arjuna.ats.internal.arjuna.recovery.RecoveryManagerImple.scan(RecoveryManagerImple.java:138)
at com.arjuna.ats.arjuna.recovery.RecoveryManager.scan(RecoveryManager.java:161)
at
com.arjuna.ats.jta.distributed.server.impl.ServerImpl.doRecoveryManagerScan(ServerImpl.java:197)
at
com.arjuna.ats.jta.distributed.SimpleIsolatedServers$4.run(SimpleIsolatedServers.java:299)
at java.base/java.lang.Thread.run(Thread.java:834)
{code}
--
This message was sent by Atlassian Jira
(v7.12.1#712002)