This discussion is archived
2 Replies Latest reply: Feb 6, 2013 11:05 AM by srikanth vallabhaneni RSS

ORACLE.TOPLINK.INTERNAL.HELPER.CONCURRENCYMANAGER.RELEASEDEFERREDLOCK

srikanth vallabhaneni Newbie
Currently Being Moderated
I am seeing this when I take thread dumps. I am on toplink 10.1.3.5 and already have the patch Patch 14643326 applied which should have fixed the issue.

This is preventing the ejb call from fully completing. Below are two threads one shows a bean managed MDB invocation which in turn calls a "Requires New" EJB method. I see that that the EJB method body itself is run, but the thread hangs in container commit. The other thread shows toplink's JTASynchronizationListener code getting invoked by the container, I believe to sync the Identity Map. This hangs like this forever. What could be the cause?

one other question I have is
In what classloader does the IdentityMap exists and if the JTASynchronizationListener is invoked in a different thread, will it have access to the Identity Map? My setup is the toplink sessions.xml and the DAO code in EAR level classloader and the EJB project will be in the same classloader. Web projects will be in a child classloader.




"[ACTIVE] ExecuteThread: '27' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=7 tid=07e6c200 nid=136 lwp_id=304056 waiting for monitor entry [592fa000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.lang.Object.wait(Native Method)
at weblogic.transaction.internal.ServerTransactionImpl.globalRetryCommit(ServerTransactionImpl.java:2740)
- locked <8a6c00f8> (a weblogic.transaction.internal.ServerTransactionImpl)
at weblogic.transaction.internal.ServerTransactionImpl.globalCommit(ServerTransactionImpl.java:2645)
at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:282)
at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:230)
at weblogic.ejb.container.internal.BaseRemoteObject.postInvoke1(BaseRemoteObject.java:622)
at weblogic.ejb.container.internal.StatelessRemoteObject.postInvoke1(StatelessRemoteObject.java:60)
at weblogic.ejb.container.internal.BaseRemoteObject.postInvokeTxRetry(BaseRemoteObject.java:442)
                    .
                    .*EJB Call with RequiresNew*
                    .
                    .
at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:518)
at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:423)
at weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:325) MDB is bean managed
at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4547)
at weblogic.jms.client.JMSSession.execute(JMSSession.java:4233)
at weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3709)
at weblogic.jms.client.JMSSession.access$000(JMSSession.java:114)
at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5058)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

"[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=7 tid=030df000 nid=64 lwp_id=8430891 waiting on condition [584fa000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at oracle.toplink.internal.helper.ConcurrencyManager.releaseDeferredLock(ConcurrencyManager.java:431)
at oracle.toplink.internal.identitymaps.CacheKey.releaseDeferredLock(CacheKey.java:335)
at oracle.toplink.publicinterface.UnitOfWork.getObjectFromSharedCacheForMerge(UnitOfWork.java:2480)
at oracle.toplink.publicinterface.UnitOfWork.getOriginalVersionOfObjectOrNull(UnitOfWork.java:2422)
at oracle.toplink.internal.sessions.MergeManager.mergeChangesOfWorkingCopyIntoOriginal(MergeManager.java:596)
at oracle.toplink.internal.sessions.MergeManager.mergeChanges(MergeManager.java:239)
at oracle.toplink.publicinterface.UnitOfWork.mergeChangesIntoParent(UnitOfWork.java:3115)
at oracle.toplink.publicinterface.UnitOfWork.mergeClonesAfterCompletion(UnitOfWork.java:3268)
at oracle.toplink.transaction.AbstractSynchronizationListener.afterCompletion(AbstractSynchronizationListener.java:138)
at oracle.toplink.transaction.JTASynchronizationListener.afterCompletion(JTASynchronizationListener.java:66)
at weblogic.transaction.internal.ServerSCInfo.doAfterCompletion(ServerSCInfo.java:1032)
at weblogic.transaction.internal.ServerSCInfo.callAfterCompletions(ServerSCInfo.java:1011)
at weblogic.transaction.internal.ServerTransactionImpl.callAfterCompletions(ServerTransactionImpl.java:2990)
at weblogic.transaction.internal.ServerTransactionImpl.afterCommittedStateHousekeeping(ServerTransactionImpl.java:2890)
at weblogic.transaction.internal.ServerTransactionImpl.setCommittedUnsync(ServerTransactionImpl.java:2941)
at weblogic.transaction.internal.ServerTransactionImpl.ackCommit(ServerTransactionImpl.java:1116)
- locked <8a6c00f8> (a weblogic.transaction.internal.ServerTransactionImpl)
at weblogic.transaction.internal.CoordinatorImpl.ackCommit(CoordinatorImpl.java:290)
at weblogic.transaction.internal.CoordinatorImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:589)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:477)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:473)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points