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 ]