Re: deadlock in CayenneContext.commitChanges

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Sun Nov 11 2007 - 09:33:08 EST

  • Next message: Andrus Adamchik: "[ANN] Cayenne 3.0M2 released"

    Actually in 3.0 DataContext IS thread-safe (DataObjects are not).
    CayenneContext probably not. At least no effort has been made to make
    it thread-safe.

    Now regarding the stack below... Is it possible to take a thread dump
    to see what locks are involved? I.e. "kill -QUIT pid"

    Andrus

    On Nov 9, 2007, at 5:00 AM, Aristedes Maniatis wrote:

    > I was able to create a deadlock between two threads committing to
    > the same context today. Cayenne as of svn trunk yesterday. Are
    > contexts not thread-safe for writing or is this a bug?
    >
    >
    > [java] -- Thread Foxtrot Single Worker Thread #3 (Id = 39) BLOCKED
    > org.apache.cayenne.event.DispatchQueu..8c8aa
    > [java] -- org.apache.cayenne.event.DispatchQueue.dispatchEvent
    > (DispatchQueue.java:54)
    > [java] -- org.apache.cayenne.event.EventManager.dispatchEvent
    > (EventManager.java:348)
    > [java] -- org.apache.cayenne.event.EventManager.postEvent
    > (EventManager.java:319)
    > [java] -- org.apache.cayenne.remote.ClientChannel.onSync
    > (ClientChannel.java:215)
    > [java] -- org.apache.cayenne.CayenneContext.doCommitChanges
    > (CayenneContext.java:249)
    > [java] -- org.apache.cayenne.CayenneContext.commitChanges
    > (CayenneContext.java:208)
    >
    >
    > [java] -- Thread AWT-EventQueue-0 (Id = 22) BLOCKED
    > org.apache.cayenne.CayenneContextGraphManage..b0e6f
    > [java] --
    > org.apache.cayenne.CayenneContextMergeHandler.runWithEventsDisabled
    > (CayenneContextMergeHandler.java:266)
    > [java] -- org.apache.cayenne.CayenneContextMergeHandler.graphFlushed
    > (CayenneContextMergeHandler.java:81)
    > [java] -- sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
    > [java] -- sun.reflect.DelegatingMethodAccessorImpl.invoke
    > (DelegatingMethodAccessorImpl.java:25)
    > [java] -- java.lang.reflect.Method.invoke(Method.java:585)
    > [java] -- org.apache.cayenne.util.Invocation.fire(Invocation.java:204)
    > [java] -- org.apache.cayenne.event.EventManager$Dispatch.fire
    > (EventManager.java:409)
    > [java] -- org.apache.cayenne.event.DispatchQueue.dispatchEvent
    > (DispatchQueue.java:162)
    > [java] -- org.apache.cayenne.event.DispatchQueue.dispatchEvent
    > (DispatchQueue.java:58)
    > [java] -- org.apache.cayenne.event.EventManager.dispatchEvent
    > (EventManager.java:348)
    > [java] -- org.apache.cayenne.event.EventManager.postEvent
    > (EventManager.java:319)
    > [java] -- org.apache.cayenne.remote.ClientChannel.onSync
    > (ClientChannel.java:215)
    > [java] -- org.apache.cayenne.CayenneContext.doCommitChanges
    > (CayenneContext.java:249)
    > [java] -- org.apache.cayenne.CayenneContext.commitChanges
    > (CayenneContext.java:208)
    >
    >
    >
    > Ari Maniatis
    >
    >
    > -------------------------->
    > ish
    > http://www.ish.com.au
    > Level 1, 30 Wilson Street Newtown 2042 Australia
    > phone +61 2 9550 5001 fax +61 2 9550 4001
    > GPG fingerprint CBFB 84B4 738D 4E87 5E5C 5EFA EF6A 7D2E 3E49 102A
    >
    >
    >



    This archive was generated by hypermail 2.0.0 : Sun Nov 11 2007 - 09:33:49 EST