DataNucleus JIRA is now in read-only mode. Raise any new issues in GitHub against the plugin that it applies to. DataNucleus JIRA will remain for the foreseeable future but will eventually be discontinued
Issue Details (XML | Word | Printable)

Key: NUCCORE-608
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Andy Jefferson
Reporter: Andy Jefferson
Votes: 0
Watchers: 0

If you were logged in you would be able to see more operations.
DataNucleus Core

Deadlock around OM.enlistInTransaction and OM.findObject

Created: 30/Nov/10 09:59 AM   Updated: 10/Dec/10 07:48 AM   Resolved: 30/Nov/10 10:58 AM
Component/s: Code Structure
Affects Version/s: None
Fix Version/s: 2.2.0.release

 Description  « Hide
Resulted from "test.jdo.general" MultithreadTest on very rare occasions (usually just worked).

Found one Java-level deadlock:
  waiting to lock monitor 0x09c86500 (object 0x8a09fd58, a org.datanucleus.jdo.JDOPersistenceManager),
  which is held by "Thread-3044"
  waiting to lock monitor 0x09c87310 (object 0x87350000, a,
  which is held by "Thread-3043"
  waiting to lock monitor 0x09c87f90 (object 0x8a0a1ac0, a org.datanucleus.ObjectManagerImpl),
  which is held by "Thread-3044"

Java stack information for the threads listed above:
        at org.datanucleus.jdo.JDOPersistenceManager.evictAll(
        - waiting to lock <0x8a09fd58> (a org.datanucleus.jdo.JDOPersistenceManager)
        at org.datanucleus.tests.MultithreadTest$
        - waiting to lock <0x87350000> (a
        at org.datanucleus.jdo.state.JDOStateManagerImpl.resetDetachState(
        at org.datanucleus.ObjectManagerImpl.getObjectFromCache(
        - locked <0x8a0a1ac0> (a org.datanucleus.ObjectManagerImpl)
        at org.datanucleus.ObjectManagerImpl.findObject(
        - locked <0x8a0a1ac0> (a org.datanucleus.ObjectManagerImpl)
        at org.datanucleus.jdo.JDOPersistenceManager.getObjectById(
        - locked <0x8a09fd58> (a org.datanucleus.jdo.JDOPersistenceManager)
        at org.datanucleus.tests.MultithreadTest$
        at org.datanucleus.ObjectManagerImpl.enlistInTransaction(
        - waiting to lock <0x8a0a1ac0> (a org.datanucleus.ObjectManagerImpl)
        at org.datanucleus.jdo.state.JDOStateManagerImpl.enlistInTransaction(
        at org.datanucleus.state.LifeCycleState.changeState(
        at org.datanucleus.jdo.state.Hollow.transitionWriteField(
        at org.datanucleus.state.AbstractStateManager.transitionWriteField(
        - locked <0x87350000> (a
        at org.datanucleus.jdo.state.JDOStateManagerImpl.preWriteField(
        at org.datanucleus.jdo.state.JDOStateManagerImpl.setStringField(
        at org.datanucleus.tests.MultithreadTest$

Andy Jefferson added a comment - 30/Nov/10 10:58 AM
Fixed in SVN trunk.

Andy Jefferson made changes - 30/Nov/10 10:58 AM
Field Original Value New Value
Status Open [ 1 ] Resolved [ 5 ]
Assignee Andy Jefferson [ andy ]
Fix Version/s 2.2.0.release [ 10931 ]
Resolution Fixed [ 1 ]
Andy Jefferson made changes - 10/Dec/10 07:48 AM
Status Resolved [ 5 ] Closed [ 6 ]