[Neo tickets] #209: Deadlock when creating relationship (concurrent threads)
neo4j.org
noreply at neo4j.org
Thu Nov 12 15:27:24 CET 2009
#209: Deadlock when creating relationship (concurrent threads)
-------------------------------------+--------------------------------------
Reporter: dmm at paradisosistemas.es | Owner: johans
Type: bug report | Status: assigned
Priority: major | Milestone:
Component: neo | Resolution:
Keywords: |
-------------------------------------+--------------------------------------
Changes (by johans):
* status: new => assigned
Comment:
You are running in to the special case here as mentioned on the list. It
is not the set property that blocks but the line before in T2, create rel
0 ->. This is what happens:
In second transaction of T1 (line 76 in attached test) the create rel 1 -
> 2 will have to modify the relationship list for node 1. Node 1 already
has a relationship incoming from node 0. T1 will then lock the
relationship between node 0 and 1 to modify the relationship list.
T2 then tries to create a relationship between 0 -> 3, to do this it has
to modify the relationship list for node 0 that is interleaved with the
relationship list for node 1 so it will also try to lock the same
relationship.
Since you force T1 to wait for T2 to complete (which can not happen since
T1 has the write lock on the relationship between 0 -> 1) it will
deadlock. If you move the join and let T1 complete then wait for T2 it
will complete without deadlock.
There are other graphs layouts where your code will complete (if both node
0 and node 1 have other relationships on them so the relationship from 0
-> 1 is not the first in list to modify when creating 0 -> 3).
--
Ticket URL: <https://trac.neo4j.org/ticket/209#comment:1>
neo4j.org <http://trac.neo4j.org/>
The Neo4J.org Issue Tracker
More information about the Tickets
mailing list