-
Bug
-
Resolution: Done
-
Critical
-
JBossAS-4.2.2.GA
-
None
There is a race condition between the connection.close() and an asynchronous transaction completion
(e.g. transaction timeout) that can lead to a leaked connection permit with eventual pool exhaustion
when using track-connection-by-tx (i.e. all local resources).
The problem is caused in the TxConnectionManager where the unregister assoication and the afterCompletion
are not synchronized with each other. Both can see the connection as ready to return to the pool
(one removes the handle, the other the synchronization at about the same time so they both check
the same state) and both do it.
The InternalManagedConnectionPool does not check for duplicate returns and uses an ArrayList to
store connections (for the MRU behaviour). So the connection ends up in the pool twice
This eventually causes problems like the leaked permit.
- is incorporated by
-
JBPAPP-1252 Race condition between connection.close() and transaction.rollback()
- Resolved
- relates to
-
JBPAPP-5596 Incorrect handling of multi-threaded access to JCA connections
- Closed