Ok, I created a ticket, with the file attached: https://trac.neo4j.org/ticket/209
-- Daniel El jue, 12-11-2009 a las 13:48 +0100, Johan Svensson escribió: > Great! I was just about to ask for some test code. You can either send > it directly to me or here to the list. Another option is to upload it > to http://trac.neo4j.org if you create a ticket for the problem. > > -Johan > > On Thu, Nov 12, 2009 at 1:40 PM, Daniel Martínez > <[email protected]> wrote: > > Hello, > > > > I have created a small test in java demonstrating this use case. If it > > is useful for you, please tell me where to upload/send it. > > > > Regards, > > -- > > Daniel Martínez > > > > El mié, 11-11-2009 a las 17:10 +0100, Daniel Martínez escribió: > > > >> Hi and thanks for the answer, > >> > >> By close transaction I mean commit. The code as it is does not share > >> transactions. > >> > >> The problematic use case is: > >> > >> T1 begin > >> create rel 0 -> 1 > >> T1 commit > >> T1 begin > >> create rel 1 -> 2 > >> T2 begin > >> create rel 0 -> 3 <<<<<< deadlock > >> set property 3 > >> T2 commit > >> T1 set property 2 > >> T1 commit > >> > >> The case that works (with 0 -> 1 and 0 -> 3 already created): > >> > >> T1 begin > >> obtain 0 -> 1 > >> obtain 1 > >> T1 commit > >> T1 begin > >> create rel 1 -> 2 > >> T2 begin > >> obtain 0 -> 3 > >> set property 3 > >> T2 commit > >> T1 set property 2 > >> T1 commit > >> > >> The goal is having 0 -> 1 -> 2 and 0 -> 3 created. I suspect the problem > >> lies within node 0. Is it possible that T1 locks 0 when creating 1 -> 2? > >> > >> Regards, > >> -- > >> Daniel Martínez > >> > >> > >> El mié, 11-11-2009 a las 14:13 +0100, Johan Svensson escribió: > >> > >> > Hi, > >> > > >> > There is no global lock in Neo4j. We lock on a relationship and node > >> > level so: > >> > > >> > create node - write lock on created node (so other tx can't see until > >> > it exist for real) > >> > set/remove property - write lock on either the node or relationship > >> > create / delete relationship - write lock on the relationship and both > >> > nodes it is connected to > >> > > >> > There is however a special case during relationship create/delete. For > >> > a short period of time (during commit) a write lock may be grabbed on > >> > some other relationship (connected to the same node) while updating > >> > the "dual interleaved linked list" storing the relationships. > >> > > >> > I could not quite understand the use case you describe. By close you > >> > mean commit/rollback or suspend of transaction? If close means commit > >> > I get: > >> > > >> > T1 begin > >> > create rel 0 -> 1 > >> > T1 commit > >> > T1 begin > >> > create rel 1->2 > >> > T2 begin > >> > setProperty 2 // this will block since other open tx has created > >> > relationship to node 2 > >> > > >> > When T1 commits T2 can continue. > >> > > >> > Regards, > >> > -Johan > _______________________________________________ > Neo mailing list > [email protected] > https://lists.neo4j.org/mailman/listinfo/user ________________________ Soluciones de Gestión para su empresa eBusiness, ERP, CRM ________________________ Daniel Martínez Martínez Gerente C/ Julia García Boután, 29 28022 Madrid España E-mail: [email protected] Web: www.paradisosistemas.es Comercial: [email protected] Tel: 678416758 _______________________________________________ Neo mailing list [email protected] https://lists.neo4j.org/mailman/listinfo/user

