Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 1613424

Summary: [GSS](6.4.z) JBJCA-1371 - Deadlock for threads executing org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.isEqual
Product: [JBoss] JBoss Enterprise Application Platform 6 Reporter: Brad Maxwell <bmaxwell>
Component: JCAAssignee: Jiri Ondrusek <jondruse>
Status: CLOSED CURRENTRELEASE QA Contact: Peter Mackay <pmackay>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.4.20CC: dcihak, jpederse, pmackay, rstancel, sfikes
Target Milestone: CR1   
Target Release: EAP 6.4.21   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1614027 (view as bug list) Environment:
Last Closed: 2019-08-19 12:42:13 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1567790, 1611770, 1614027    

Description Brad Maxwell 2018-08-07 14:08:54 UTC
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)
    ...