Thanks Oliver for the logs. I could see that the transaction.commit call in the client reaching the server and the hang is is in the TopLink's afterCompletion method. Since the client is waiting for the server call to return, you are observing the hang.
I guess this issue is same as the issue being discusses at
http://forums.java.net/jive/thread.jspa?threadID=31970&tstart=0
For easy reference, copy and pasted trace from your log:
Thread t_at_23299: (state = BLOCKED)
- java.lang.Object.wait(long) @bci=0 (Interpreted frame)
- java.lang.Object.wait() @bci=2, line=474 (Interpreted frame)
- oracle.toplink.essentials.internal.helper.ConcurrencyManager.acquire(boolean) @bci=35, line=111 (Interpreted frame)
- oracle.toplink.essentials.internal.identitymaps.CacheKey.acquire() @bci=5, line=117 (Interpreted frame)
- oracle.toplink.essentials.internal.identitymaps.FullIdentityMap.remove(oracle.toplink.essentials.internal.identitymaps.CacheKey) @bci=5, line=199 (Interpreted frame)
- oracle.toplink.essentials.internal.identitymaps.HardCacheWeakIdentityMap.remove(oracle.toplink.essentials.internal.identitymaps.CacheKey) @bci=40, line=117 (Interpreted frame)
- oracle.toplink.essentials.internal.helper.WriteLockManager.releaseAllAcquiredLocks(oracle.toplink.essentials.internal.sessions.MergeManager) @bci=53, line=399 (Interpreted frame)
- oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.afterTransaction(boolean, boolean) @bci=66, line=1835 (Interpreted frame)
- oracle.toplink.essentials.transaction.AbstractSynchronizationListener.afterCompletion(java.lang.Object) @bci=51, line=170 (Interpreted frame)
- oracle.toplink.essentials.transaction.JTASynchronizationListener.afterCompletion(int) @bci=9, line=102 (Interpreted frame)
[Message sent by forum member 'sankara' (sankara)]
http://forums.java.net/jive/thread.jspa?messageID=246487