]
Lin Gao updated WFLY-10181:
---------------------------
Git Pull Request:
Deadlock for threads executing
org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.isEqual (WFLY)
-------------------------------------------------------------------------------------------------------
Key: WFLY-10181
URL:
https://issues.jboss.org/browse/WFLY-10181
Project: WildFly
Issue Type: Bug
Components: JCA
Affects Versions: 12.0.0.Final
Reporter: Flavia Rainone
Assignee: Lin Gao
Labels: downstream_dependency
Fix For: 13.0.0.Beta1
Two or more threads hold one lock on an instance of java.util.Collections$SynchronizedMap
and attempt to obtain a lock on a different instance (e.g. locks on 0x00000001d0d08bd8 and
0x00000001cea22628 in the example below)
"thread-one" ...
java.lang.Thread.State: BLOCKED (on object monitor)
at java.util.Collections$SynchronizedMap.get(Collections.java:2584)
waiting to lock <0x00000001cea22628> (a java.util.Collections$SynchronizedMap)
at java.util.AbstractMap.equals(AbstractMap.java:495)
at java.util.Collections$SynchronizedMap.equals(Collections.java:2631)
locked <0x00000001d0d08bd8> (a java.util.Collections$SynchronizedMap)
at
org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.isEqual(XAManagedConnectionFactory.java:563)
locked <0x00000001d0d08bd8> (a java.util.Collections$SynchronizedMap)
at
org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.equals(XAManagedConnectionFactory.java:598)
at
org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnectionFactory$SubjectActions.doCheck(BaseWrapperManagedConnectionFactory.java:1397)
at
org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnectionFactory$SubjectActions.addMatchingProperties(BaseWrapperManagedConnectionFactory.java:1508)
at
org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnectionFactory.getConnectionProperties(BaseWrapperManagedConnectionFactory.java:1135)
at
org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.matchManagedConnections(XAManagedConnectionFactory.java:533)
...
at
org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:138)
at
org.jboss.as.connector.subsystems.datasources.WildFlyDataSource.getConnection(WildFlyDataSource.java:66)
...
"thread-two" ...
java.lang.Thread.State: BLOCKED (on object monitor)
at java.util.Collections$SynchronizedMap.size(Collections.java:2572)
waiting to lock <0x00000001d0d08bd8> (a java.util.Collections$SynchronizedMap)
at java.util.AbstractMap.equals(AbstractMap.java:482)
at java.util.Collections$SynchronizedMap.equals(Collections.java:2631)
locked <0x00000001cea22628> (a java.util.Collections$SynchronizedMap)
at
org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.isEqual(XAManagedConnectionFactory.java:563)
locked <0x00000001cea22628> (a java.util.Collections$SynchronizedMap)
at
org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.equals(XAManagedConnectionFactory.java:598)
... [same stack as thread-one above] ...
at
org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:138)
at
org.jboss.as.connector.subsystems.datasources.WildFlyDataSource.getConnection(WildFlyDataSource.java:66)
...