Hi,

I am getting the below deadlock exception occasionally and so far only 
on relationship operations. The code base is trunk. The system this is 
running on is Linux and the Java app integrates Neo with Spring 
transaction manager. Multiple threads are actively updating the Neo 
storage in different ways. The only way for us to currently mitigate 
this problem is to retry the entire transaction call around this, but 
this only succeeds to 99%. I am using the LuceneIndexer to store a 
simple Long ID value representing a node in case that helps based on the 
exception message.

I am currently thinking how to best extract this problem into a little 
unit test but based on how often this happens, I haven't been able to 
reproduce it in a self-contained test suite.

Any suggestions on how to get this under control?

Thanks for any help,
-Andreas

org.neo4j.impl.transaction.DeadlockDetectedException: 
Transaction[Status=STATUS_ACTIVE,ResourceList=Xid[GlobalId[NEOKERNL|1257104121765|6930039],
 
BranchId[
 49 54 50 51 55 51 ]] 
xaresource[org.neo4j.util.index.lucenexaconnection$lucenexaresou...@cd66f1] 
Status[ENLISTED],Xid[GlobalId[NEOKERNL|1257104121765|6930
039], BranchId[ 52 49 52 49 52 49 ]] 
xaresource[org.neo4j.impl.nioneo.xa.neostorexaconnection$neostorexaresou...@12161db]
 
Status[ENLISTED] can't wait on re
source RWLock[NodeImpl#429819] since => 
Transaction[Status=STATUS_ACTIVE,ResourceList=Xid[GlobalId[NEOKERNL|1257104121765|6930039],
 
BranchId[ 49 54 50 51 5
5 51 ]] 
xaresource[org.neo4j.util.index.lucenexaconnection$lucenexaresou...@cd66f1] 
Status[ENLISTED],Xid[GlobalId[NEOKERNL|1257104121765|6930039], BranchId
[ 52 49 52 49 52 49 ]] 
xaresource[org.neo4j.impl.nioneo.xa.neostorexaconnection$neostorexaresou...@12161db]
 
Status[ENLISTED] <- RWLock[NodeImpl#269645] <-
Transaction[Status=STATUS_ACTIVE,ResourceList=Xid[GlobalId[NEOKERNL|1257104121765|6930039],
 
BranchId[ 49 54 50 51 55 51 ]] XAResource[org.neo4j.util.index.
lucenexaconnection$lucenexaresou...@cd66f1] 
Status[ENLISTED],Xid[GlobalId[NEOKERNL|1257104121765|6930039], BranchId[ 
52 49 52 49 52 49 ]] XAResource[org.ne
o4j.impl.nioneo.xa.neostorexaconnection$neostorexaresou...@12161db] 
Status[ENLISTED] <- RWLock[NodeImpl#429819]
        at 
org.neo4j.impl.transaction.RagManager.checkWaitOnRecursive(RagManager.java:208)
        at 
org.neo4j.impl.transaction.RagManager.checkWaitOnRecursive(RagManager.java:236)
        at 
org.neo4j.impl.transaction.RagManager.checkWaitOn(RagManager.java:176)
        at 
org.neo4j.impl.transaction.RWLock.acquireWriteLock(RWLock.java:298)
        at 
org.neo4j.impl.transaction.LockManager.getWriteLock(LockManager.java:122)
        at org.neo4j.impl.core.NodeManager.acquireLock(NodeManager.java:682)
        at 
org.neo4j.impl.core.NodeManager.createRelationship(NodeManager.java:303)
        at 
org.neo4j.impl.core.NodeImpl.createRelationshipTo(NodeImpl.java:357)
        at 
org.neo4j.impl.core.NodeProxy.createRelationshipTo(NodeProxy.java:177)




org.neo4j.impl.transaction.DeadlockDetectedException: 
Transaction[Status=STATUS_ACTIVE,ResourceList=Xid[GlobalId[NEOKERNL|1256778708568|13441],
 BranchId[ 49
54 50 51 55 51 ]] 
xaresource[org.neo4j.util.index.lucenexaconnection$lucenexaresou...@467cb704] 
Status[ENLISTED],Xid[GlobalId[NEOKERNL|1256778708568|13441],
BranchId[ 52 49 52 49 52 49 ]] 
xaresource[org.neo4j.impl.nioneo.xa.neostorexaconnection$neostorexaresou...@25d38bc3]
 Status[ENLISTED] can't wait on resource
RWLock[RelationshipImpl #22 of type CUSTOM_TYPE between Node[1] and Node[14]] 
since => Transaction[Status=STATUS_ACTIVE,ResourceList=Xid[GlobalId[NEOKERNL|125
6778708568|13441], BranchId[ 49 54 50 51 55 51 ]] 
xaresource[org.neo4j.util.index.lucenexaconnection$lucenexaresou...@467cb704] 
Status[ENLISTED],Xid[GlobalId
[NEOKERNL|1256778708568|13441], BranchId[ 52 49 52 49 52 49 ]] 
xaresource[org.neo4j.impl.nioneo.xa.neostorexaconnection$neostorexaresou...@25d38bc3]
 Status[E
NLISTED] <- RWLock[NodeImpl#1] <- 
Transaction[Status=STATUS_ACTIVE,ResourceList=Xid[GlobalId[NEOKERNL|1256778708568|13441],
 BranchId[ 49 54 50 51 55 51 ]] XA
resource[org.neo4j.util.index.lucenexaconnection$lucenexaresou...@467cb704] 
Status[ENLISTED],Xid[GlobalId[NEOKERNL|1256778708568|13441], BranchId[ 52 49 52 
4
9 52 49 ]] 
xaresource[org.neo4j.impl.nioneo.xa.neostorexaconnection$neostorexaresou...@25d38bc3]
 Status[ENLISTED] <- RWLock[RelationshipImpl #22 of type 
CUSTOM_TYPE between Node[1] and Node[14]]
        at 
org.neo4j.impl.transaction.RagManager.checkWaitOnRecursive(RagManager.java:208)
        at 
org.neo4j.impl.transaction.RagManager.checkWaitOnRecursive(RagManager.java:236)
        at 
org.neo4j.impl.transaction.RagManager.checkWaitOn(RagManager.java:176)
        at org.neo4j.impl.transaction.RWLock.acquireWriteLock(RWLock.java:298)
        at 
org.neo4j.impl.transaction.LockManager.getWriteLock(LockManager.java:122)
        at 
org.neo4j.impl.nioneo.xa.NeoTransaction.getWriteLock(NeoTransaction.java:664)
        at 
org.neo4j.impl.nioneo.xa.NeoTransaction.disconnectRelationship(NeoTransaction.java:557)
        at 
org.neo4j.impl.nioneo.xa.NeoTransaction.relDelete(NeoTransaction.java:545)
        at 
org.neo4j.impl.nioneo.xa.NeoStoreXaConnection$RelationshipEventConsumerImpl.deleteRelationship(NeoStoreXaConnection.java:257)
        at 
org.neo4j.impl.nioneo.xa.NioNeoDbPersistenceSource$NioNeoDbResourceConnection.relDelete(NioNeoDbPersistenceSource.java:161)
        at 
org.neo4j.impl.persistence.PersistenceManager.relDelete(PersistenceManager.java:135)
        at 
org.neo4j.impl.core.NodeManager.deleteRelationship(NodeManager.java:832)
        at 
org.neo4j.impl.core.RelationshipImpl.delete(RelationshipImpl.java:168)
        at 
org.neo4j.impl.core.RelationshipProxy.delete(RelationshipProxy.java:44)



_______________________________________________
Neo mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to