reproduction of the deadlock :) Michael
> Am 01.04.2015 um 18:21 schrieb Matias Burak <[email protected]>: > > I have some a complex domain model, what’d you need from the test? > >> El 31/3/2015, a las 12:28, Michael Hunger <[email protected] >> <mailto:[email protected]>> escribió: >> >> Then that's something else. >> >> Would you be able to create a minimal test-case that reproduces that? >> >> Michael >> >>> Am 31.03.2015 um 15:26 schrieb Matias Burak <[email protected] >>> <mailto:[email protected]>>: >>> >>> Yes, I can. It happens every time I do a stress test. If I do the same >>> process for only one user it works fine and it closes all the transactions. >>> But doing it for 10 users it starts to do some long transactions (10 secs) >>> in different threads and I start to see locks (i also see some deadlocks >>> that i retry but locks are still there) and transactions are not closed. >>> >>>> El 31/3/2015, a las 10:19, Michael Hunger >>>> <[email protected] >>>> <mailto:[email protected]>> escribió: >>>> >>>> So far it's deadlock detection is pretty good it uses a graph internally >>>> to do that (find cycles). >>>> >>>> Do you think you could reproduce the situation somehow >>>> >>>> Michael >>>> >>>> >>>>> Am 30.03.2015 um 15:44 schrieb Matias Burak <[email protected] >>>>> <mailto:[email protected]>>: >>>>> >>>>> Could it be possible that neo4j is not detecting a deadlock with more >>>>> than 2 threads? >>>>> I mean this case: thread-1 needs something from thread-2 which needs >>>>> something from thread-3 which needs something from thread-1. >>>>> >>>>> >>>>>> El 27/3/2015, a las 16:07, Michael Hunger >>>>>> <[email protected] >>>>>> <mailto:[email protected]>> escribió: >>>>>> >>>>>> >>>>>>> Am 27.03.2015 um 17:24 schrieb Matias Burak <[email protected] >>>>>>> <mailto:[email protected]>>: >>>>>>> >>>>>>> Thanks for your response. >>>>>>> Yeah, it seems that transactions might not be closed. Why would this >>>>>>> happen? I mean... I’m doing my transactions on a Spring >>>>>>> TransactionTemplate execute. >>>>>> >>>>>> Good question, don't know where the leak would come from. >>>>>> Do you perhaps execute cypher or index queries without exhausting the >>>>>> results or calling .close on them? >>>>>> >>>>>> But your stack traces should give you a hint. >>>>>> >>>>>>> Do I need neo4j enterprise to check open transacctionn with JMX? >>>>>> >>>>>> Yes >>>>>> >>>>>>> A thread-dump look like this: >>>>>>> >>>>>>> "pool-11537-thread-1" prio=5 tid=0x00007f930b395800 nid=0x1a36f in >>>>>>> Object.wait() [0x000000013c924000] >>>>>>> java.lang.Thread.State: WAITING (on object monitor) >>>>>>> at java.lang.Object.wait(Native Method) >>>>>>> - waiting on <0x00000006d6669c88> (a >>>>>>> org.neo4j.kernel.impl.transaction.RWLock) >>>>>>> at java.lang.Object.wait(Object.java:503) >>>>>>> at >>>>>>> org.neo4j.kernel.impl.transaction.RWLock.deadlockGuardedWait(RWLock.java:652) >>>>>>> at >>>>>>> org.neo4j.kernel.impl.transaction.RWLock.acquireWriteLock(RWLock.java:344) >>>>>>> >>>>>>> nid=0x1a36f is the nid on the db? There’s no nid 107375 (decimal for >>>>>>> 0x1a36f) >>>>>> >>>>>> >>>>>>> >>>>>>> >>>>>>>> El 27/3/2015, a las 12:54, Michael Hunger >>>>>>>> <[email protected] >>>>>>>> <mailto:[email protected]>> escribió: >>>>>>>> >>>>>>>> Hi Matias, please send questions like that to the google group. >>>>>>>> >>>>>>>> A deadlock appears when it is about to acquire two locks in reverse >>>>>>>> order. >>>>>>>> >>>>>>>> What you see is probably just a lock that is not released because the >>>>>>>> transaction which created it was not closed and is still running? >>>>>>>> >>>>>>>> You can check via JMX if there is still an ongoing open transaction >>>>>>>> and open locks. >>>>>>>> >>>>>>>> Also when you take a thread-dump you see what lock (incl. node-id) the >>>>>>>> thread is waiting for. >>>>>>>> >>>>>>>> Cheers, Michael >>>>>>>> >>>>>>>> On Fri, Mar 27, 2015 at 4:07 PM, Matias Burak <[email protected] >>>>>>>> <mailto:[email protected]>> wrote: >>>>>>>> Hi Michael, sorry I bother you again with another problem. >>>>>>>> >>>>>>>> Is it possible that Neo4j doesn’t realize that it’s in a deadlock? I’m >>>>>>>> using an old version of the db (1.9) and when running several >>>>>>>> transactions on different threads against the db sometimes the threads >>>>>>>> get locked and never are released and I don’t see an exception, they >>>>>>>> are just stuck on deadlockGuardedWait(). >>>>>>>> I expect deadlocks and I built a retry feature to try again, but I’m >>>>>>>> not getting any exceptions :( (sometimes I am) >>>>>>>> Any idea? >>>>>>>> >>>>>>>> Thanks, >>>>>>>> MAtias. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> > -- You received this message because you are subscribed to the Google Groups "Neo4j" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
