Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[eclipselink-users] Deadlock issue of JPA 1.0

We have detected a deadlock when executing JPA 1.0 applications using Toplink Essentials in GlassFish 2.1. We don't have the application which reproduces this issue. Although we are investigating source codes to find the cause of this issue, there are some unclear points. We need to resolve this issue urgently. Is there anyone who can answer the following questions?

 

----------

We have three questions.

1. Do you have any idea about the condition when the problematic steps of the below stack traces are executed?

   We thought the problem can be reproduced when all of these conditions are satisfied.

   However this deadlock issue was not reproducible when we tested it.

 

   CONDITION:

     1.1. The application uses JPA 1.0.

     1.2. 'JTA' is specified in transaction-type definition of persistence.xml

     1.3. The application has many entities which have One-to-One or One-to-Many relationships.

     1.4. The shared cache is disabled.

     1.5. The application executes persist() of EntityManager.

     1.6. After 1.4, the application executes getSingleResult() of Query.

     1.7. After 1.5, the application executes commit() of UserTransaction.

     1.8. The application satisfied with all conditions between 1.1 and 1.6 at the same time is executed on multi threads.

 

2. Is there anyone who knows the condition the following step is executed?

 

      oracle.toplink.essentials.internal.descriptors.ObjectBuilder.mergeIntoObject(ObjectBuilder.java:2134)

 

3. I'd like to know why ConcurrencyManager class calls the wait() after acquiring the lock at the following step.

   In Addtion, I would also like to know the condition when the lock is released. Can anybody help me?

 

   oracle.toplink.essentials.internal.helper.WriteLockManager.acquireLocksForClone(WriteLockManager.java:99)

----------

Thanks.

 

THE STACKTRACE:

 

"httpWorkerThread-28090-0" daemon prio=6 tid=0x05ac2c18 nid=0x2898 in Object.wait() [0x6583d000..0x6583faa0]

               at java.lang.Object.wait(Native Method)

               - waiting on <0x4e480fe0> (a oracle.toplink.essentials.internal.helper.ConcurrencyManager)

               at java.lang.Object.wait(Object.java:474)

               at oracle.toplink.essentials.internal.helper.WriteLockManager.acquireLocksForClone(WriteLockManager.java:99)

               - locked <0x4e480fe0> (a oracle.toplink.essentials.internal.helper.ConcurrencyManager)

               at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.cloneAndRegisterObject(UnitOfWorkImpl.java:669)

               at oracle.toplink.essentials.internal.sessions.UnitOfWorkIdentityMapAccessor.getAndCloneCacheKeyFromParent(UnitOfWorkIdentityMapAccessor.java:167)

               at oracle.toplink.essentials.internal.sessions.UnitOfWorkIdentityMapAccessor.getFromIdentityMap(UnitOfWorkIdentityMapAccessor.java:105)

               at oracle.toplink.essentials.internal.sessions.IdentityMapAccessor.getFromIdentityMap(IdentityMapAccessor.java:310)

               at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerExistingObject(UnitOfWorkImpl.java:3091)

               - locked <0x4e423f80> (a oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork)

               at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerExistingObject(UnitOfWorkImpl.java:3053)

               - locked <0x4e423f80> (a oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork)

               at oracle.toplink.essentials.queryframework.ObjectBuildingQuery.registerIndividualResult(ObjectBuildingQuery.java:339)

               at oracle.toplink.essentials.internal.descriptors.ObjectBuilder.buildWorkingCopyCloneNormally(ObjectBuilder.java:456)

               at oracle.toplink.essentials.internal.descriptors.ObjectBuilder.buildObjectInUnitOfWork(ObjectBuilder.java:421)

               at oracle.toplink.essentials.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:387)

               at oracle.toplink.essentials.queryframework.ObjectLevelReadQuery.buildObject(ObjectLevelReadQuery.java:386)

               at oracle.toplink.essentials.queryframework.ObjectBuildingQuery.registerIndividualResult(ObjectBuildingQuery.java:323)

               at oracle.toplink.essentials.queryframework.ReadAllQuery.registerResultInUnitOfWork(ReadAllQuery.java:511)

               at oracle.toplink.essentials.queryframework.ReadAllQuery.executeObjectLevelReadQuery(ReadAllQuery.java:346)

               at oracle.toplink.essentials.queryframework.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:724)

               at oracle.toplink.essentials.queryframework.DatabaseQuery.execute(DatabaseQuery.java:628)

               at oracle.toplink.essentials.queryframework.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:692)

               at oracle.toplink.essentials.queryframework.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:746)

               at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2248)

               at oracle.toplink.essentials.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:952)

               at oracle.toplink.essentials.internal.indirection.QueryBasedValueHolder.instantiate(QueryBasedValueHolder.java:101)

               at oracle.toplink.essentials.internal.indirection.QueryBasedValueHolder.instantiate(QueryBasedValueHolder.java:91)

               at oracle.toplink.essentials.internal.indirection.DatabaseValueHolder.getValue(DatabaseValueHolder.java:105)

               - locked <0x4e423f60> (a oracle.toplink.essentials.internal.indirection.QueryBasedValueHolder)

               at oracle.toplink.essentials.indirection.IndirectList.buildDelegate(IndirectList.java:208)

               at oracle.toplink.essentials.indirection.IndirectList.getDelegate(IndirectList.java:332)

               - locked <0x4e423e38> (a oracle.toplink.essentials.indirection.IndirectList)

               at oracle.toplink.essentials.indirection.IndirectList.size(IndirectList.java:663)

               at oracle.toplink.essentials.internal.queryframework.CollectionContainerPolicy.sizeFor(CollectionContainerPolicy.java:199)

               at oracle.toplink.essentials.internal.indirection.TransparentIndirectionPolicy.getRealAttributeValueFromObject(TransparentIndirectionPolicy.java:267)

               at oracle.toplink.essentials.mappings.ForeignReferenceMapping.getRealAttributeValueFromObject(ForeignReferenceMapping.java:375)

               at oracle.toplink.essentials.mappings.CollectionMapping.getRealAttributeValueFromObject(CollectionMapping.java:571)

               at oracle.toplink.essentials.mappings.CollectionMapping.getRealCollectionAttributeValueFromObject(CollectionMapping.java:586)

               at oracle.toplink.essentials.mappings.CollectionMapping.mergeIntoObject(CollectionMapping.java:752)

               at oracle.toplink.essentials.internal.descriptors.ObjectBuilder.mergeIntoObject(ObjectBuilder.java:2152)

               at oracle.toplink.essentials.internal.descriptors.ObjectBuilder.mergeIntoObject(ObjectBuilder.java:2134)

               at oracle.toplink.essentials.internal.sessions.MergeManager.mergeChangesOfWorkingCopyIntoOriginal(MergeManager.java:518)

               at oracle.toplink.essentials.internal.sessions.MergeManager.mergeChanges(MergeManager.java:262)

               at oracle.toplink.essentials.mappings.ObjectReferenceMapping.mergeIntoObject(ObjectReferenceMapping.java:373)

               at oracle.toplink.essentials.internal.descriptors.ObjectBuilder.mergeIntoObject(ObjectBuilder.java:2152)

               at oracle.toplink.essentials.internal.descriptors.ObjectBuilder.mergeIntoObject(ObjectBuilder.java:2134)

               at oracle.toplink.essentials.internal.sessions.MergeManager.mergeChangesOfWorkingCopyIntoOriginal(MergeManager.java:504)

               at oracle.toplink.essentials.internal.sessions.MergeManager.mergeChanges(MergeManager.java:262)

               at oracle.toplink.essentials.mappings.CollectionMapping.mergeIntoObject(CollectionMapping.java:778)

               - locked <0x36926880> (a java.util.ArrayList)

               at oracle.toplink.essentials.internal.descriptors.ObjectBuilder.mergeIntoObject(ObjectBuilder.java:2152)

               at oracle.toplink.essentials.internal.descriptors.ObjectBuilder.mergeIntoObject(ObjectBuilder.java:2134)

               at oracle.toplink.essentials.internal.sessions.MergeManager.mergeChangesOfWorkingCopyIntoOriginal(MergeManager.java:512)

               at oracle.toplink.essentials.internal.sessions.MergeManager.mergeChanges(MergeManager.java:262)

               at oracle.toplink.essentials.mappings.ObjectReferenceMapping.mergeChangesIntoObject(ObjectReferenceMapping.java:318)

               at oracle.toplink.essentials.internal.descriptors.ObjectBuilder.mergeChangesIntoObject(ObjectBuilder.java:2114)

               at oracle.toplink.essentials.internal.sessions.MergeManager.mergeChangesOfWorkingCopyIntoOriginal(MergeManager.java:528)

               at oracle.toplink.essentials.internal.sessions.MergeManager.mergeChanges(MergeManager.java:262)

               at oracle.toplink.essentials.mappings.ObjectReferenceMapping.mergeChangesIntoObject(ObjectReferenceMapping.java:318)

               at oracle.toplink.essentials.internal.descriptors.ObjectBuilder.mergeChangesIntoObject(ObjectBuilder.java:2114)

               at oracle.toplink.essentials.internal.sessions.MergeManager.mergeChangesOfWorkingCopyIntoOriginal(MergeManager.java:528)

               at oracle.toplink.essentials.internal.sessions.MergeManager.mergeChanges(MergeManager.java:262)

               at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.mergeChangesIntoParent(UnitOfWorkImpl.java:2541)

               at oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork.mergeChangesIntoParent(RepeatableWriteUnitOfWork.java:303)

               at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.mergeClonesAfterCompletion(UnitOfWorkImpl.java:2656)

               at oracle.toplink.essentials.transaction.AbstractSynchronizationListener.afterCompletion(AbstractSynchronizationListener.java:173)

               at oracle.toplink.essentials.transaction.JTASynchronizationListener.afterCompletion(JTASynchronizationListener.java:102)

               at com.sun.enterprise.distributedtx.J2EETransaction.commit(J2EETransaction.java:502)

               at com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.commit(J2EETransactionManagerOpt.java:387)

               at com.sun.enterprise.distributedtx.UserTransactionImpl.commit(UserTransactionImpl.java:197)

               at org.jboss.seam.transaction.UTTransaction.commit(UTTransaction.java:52)

               at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:603)

               at org.jboss.seam.jsf.SeamPhaseListener.handleTransactionsAfterPhase(SeamPhaseListener.java:341)

               at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:241)

               at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:192)

               at com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:175)

               at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:114)

               at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)

               at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)

               at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427)

               at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:333)

               at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)

               at net.poweregg.faces.filter.MultipartFilter.doFilter(MultipartFilter.java:115)

               at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)

               at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)

               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)

               at org.jboss.seam.web.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42)

               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

               at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:80)

               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

               at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)

               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

               at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)

               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

               at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)

               at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)

               at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)

               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

               at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)

               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

               at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)

               at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)

               at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)

               at net.poweregg.faces.filter.CacheControlFilter.doFilter(CacheControlFilter.java:84)

               at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)

               at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)

               at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:313)

               at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:287)

               at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218)

               at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)

               at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)

               at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)

               at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)

               at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222)

               at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)

               at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)

               at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)

               at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)

               at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166)

               at com.fujitsu.interstage.javaee.catalina.core.ISStandardEngineValve.invoke(ISStandardEngineValve.java:99)

               at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)

               at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)

               at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)

               at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)

               at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:291)

               at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:648)

               at com.sun.enterprise.web.connector.grizzly.blocking.ProcessorBlockingTask.doProcess(ProcessorBlockingTask.java:221)

               at com.sun.enterprise.web.connector.grizzly.blocking.ProcessorBlockingTask.process(ProcessorBlockingTask.java:186)

               at com.sun.enterprise.web.connector.grizzly.blocking.ProcessorBlockingTask.doTask(ProcessorBlockingTask.java:140)

               at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)

               at com.sun.enterprise.web.connector.grizzly.WorkerThreadImpl.run(WorkerThreadImpl.java:116)


Back to the top