Hello.
Let me introduce the problem
App server ( jboss-as-7.1.1.Final ) which is a part of complex distributed app using CORBA for communication fails with OutOfMemoryError
I've investigated the problem and seems like root cause is inability to clean up txSynchs ( and locks ) maps resided in org.jboss.jca.core.connectionmanager.transaction.TransactionSynchronizer class.
More detailed:
Collections mentioned above should be cleaned up in afterCompletion() method but TX is unavailable at that stage, so Transaction.hashCode() returns -1 which leads to dangled TX associations.
Right now I don't understand why javax.transaction.Transaction is used as a key in this maps? For me it seems like this code wil always fail.
I've attached modified source code of TransactionSynchronizer which I used during investigation and partial app log with records specific to one TX.
Regards, Andrey.