Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.0
    • Fix Version/s: 3.1B1
    • Component/s: Core Library
    • Labels:
      None
    • Environment:
      3.0M3

      Description

      I have gotten this one a couple of times on our production system running 3.0M3. As far as I see, this code has not been improved since 3.0M3, so I register this as a major bug.

      "TP-Processor5" daemon prio=10 tid=0x00002aab798c0400 nid=0xc2e waiting for monitor entry [0x0000000043e64000..0x000000
      0043e66bb0]
      java.lang.Thread.State: BLOCKED (on object monitor)
      at org.apache.cayenne.access.DataRowStore.getCachedSnapshot(DataRowStore.java:351)

      • waiting to lock <0x00002aaab91a5c40> (a org.apache.cayenne.access.DataRowStore)
        at org.apache.cayenne.access.DataDomainQueryAction.interceptOIDQuery(DataDomainQueryAction.java:174)
        at org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:114)
        at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:740)
        at org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:296)
        at org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:84)
        at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:1331)
        at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:1320)
        at org.apache.cayenne.DataObjectUtils.objectForQuery(DataObjectUtils.java:275)
        at org.apache.cayenne.DataObjectUtils.objectForPK(DataObjectUtils.java:261)
        at org.apache.cayenne.DataObjectUtils.objectForPK(DataObjectUtils.java:172)

      "DefaultQuartzScheduler_Worker-10" prio=10 tid=0x00002aab7afedc00 nid=0xc20 waiting for monitor entry [0x0000000043a62000..0x0000000043a62db0]
      java.lang.Thread.State: BLOCKED (on object monitor)
      at org.apache.cayenne.access.DataRowStore.getCachedSnapshot(DataRowStore.java:351)

      • waiting to lock <0x00002aaab91a5c40> (a org.apache.cayenne.access.DataRowStore)
        at org.apache.cayenne.access.DataDomainQueryAction.interceptOIDQuery(DataDomainQueryAction.java:174)
        at org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:114)
        at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:740)
        at org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:296)
        at org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:84)
        at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:1331)
        at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:1320)
        at org.apache.cayenne.DataObjectUtils.objectForQuery(DataObjectUtils.java:275)
        at org.apache.cayenne.DataObjectUtils.objectForPK(DataObjectUtils.java:261)
        at org.apache.cayenne.DataObjectUtils.objectForPK(DataObjectUtils.java:172)

      "DefaultQuartzScheduler_Worker-3" prio=10 tid=0x00002aab7af02c00 nid=0xc19 waiting for monitor entry [0x000000004335b000..0x000000004335be30]
      java.lang.Thread.State: BLOCKED (on object monitor)
      at org.apache.cayenne.access.DataRowStore.snapshotsUpdatedForObjects(DataRowStore.java:234)

      • waiting to lock <0x00002aaab91a5c40> (a org.apache.cayenne.access.DataRowStore)
        at org.apache.cayenne.access.ObjectResolver.objectsFromDataRows(ObjectResolver.java:125)
        at org.apache.cayenne.access.ObjectResolver.synchronizedObjectsFromDataRows(ObjectResolver.java:101)
      • locked <0x00002aaabb39bb70> (a org.apache.cayenne.access.ObjectStore)
        at org.apache.cayenne.access.DataDomainQueryAction.interceptObjectConversion(DataDomainQueryAction.java:460)
        at org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:129)
        at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:740)
        at org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:296)
        at org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:84)
        at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:1331)
        at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:1320)

        Issue Links

          Activity

          Hide
          Tore Halset added a comment -

          In the same thread dump, there were some other RUNNABLE that also looked strange. I do not know if those are relevant.

          "TP-Processor12" daemon prio=10 tid=0x00002aab77946400 nid=0x166d runnable [0x0000000044d74000..0x0000000044d75db0]
          java.lang.Thread.State: RUNNABLE
          at java.lang.Class.getDeclaredMethods0(Native Method)
          at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
          at java.lang.Class.getDeclaredMethod(Class.java:1935)
          at org.apache.cayenne.util.Invocation.lookupMethodInHierarchy(Invocation.java:134)
          at org.apache.cayenne.util.Invocation.<init>(Invocation.java:111)
          at org.apache.cayenne.util.Invocation.<init>(Invocation.java:65)
          at org.apache.cayenne.event.EventManager$NonBlockingInvocation.<init>(EventManager.java:436)
          at org.apache.cayenne.event.EventManager.addListener(EventManager.java:216)
          at org.apache.cayenne.event.EventManager.addNonBlockingListener(EventManager.java:192)
          at org.apache.cayenne.access.ObjectStore.setDataRowCache(ObjectStore.java:262)
          at org.apache.cayenne.access.ObjectStore.<init>(ObjectStore.java:129)
          at org.apache.cayenne.access.ObjectStore.<init>(ObjectStore.java:118)
          at org.apache.cayenne.access.DataDomain.createDataContext(DataDomain.java:601)

          "TP-Processor11" daemon prio=10 tid=0x00002aab77945800 nid=0x166c runnable [0x0000000044c73000..0x0000000044c74b30]
          java.lang.Thread.State: RUNNABLE
          at java.lang.Class.getDeclaredMethods0(Native Method)
          at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
          at java.lang.Class.getDeclaredMethod(Class.java:1935)
          at org.apache.cayenne.util.Invocation.lookupMethodInHierarchy(Invocation.java:134)
          at org.apache.cayenne.util.Invocation.<init>(Invocation.java:111)
          at org.apache.cayenne.util.Invocation.<init>(Invocation.java:65)
          at org.apache.cayenne.event.EventManager$NonBlockingInvocation.<init>(EventManager.java:436)
          at org.apache.cayenne.event.EventManager.addListener(EventManager.java:216)
          at org.apache.cayenne.event.EventManager.addNonBlockingListener(EventManager.java:192)
          at org.apache.cayenne.access.ObjectStore.setDataRowCache(ObjectStore.java:262)
          at org.apache.cayenne.access.ObjectStore.<init>(ObjectStore.java:129)
          at org.apache.cayenne.access.ObjectStore.<init>(ObjectStore.java:118)
          at org.apache.cayenne.access.DataDomain.createDataContext(DataDomain.java:601)

          "TP-Processor7" daemon prio=10 tid=0x00002aab798c1800 nid=0xc30 runnable [0x0000000044067000..0x0000000044068ab0]
          java.lang.Thread.State: RUNNABLE
          at java.lang.Class.getDeclaredMethods0(Native Method)
          at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
          at java.lang.Class.getDeclaredMethod(Class.java:1935)
          at org.apache.cayenne.util.Invocation.lookupMethodInHierarchy(Invocation.java:134)
          at org.apache.cayenne.util.Invocation.<init>(Invocation.java:111)
          at org.apache.cayenne.util.Invocation.<init>(Invocation.java:65)
          at org.apache.cayenne.event.EventManager$NonBlockingInvocation.<init>(EventManager.java:436)
          at org.apache.cayenne.event.EventManager.addListener(EventManager.java:216)
          at org.apache.cayenne.event.EventManager.addNonBlockingListener(EventManager.java:192)
          at org.apache.cayenne.access.ObjectStore.setDataRowCache(ObjectStore.java:262)
          at org.apache.cayenne.access.ObjectStore.<init>(ObjectStore.java:129)
          at org.apache.cayenne.access.ObjectStore.<init>(ObjectStore.java:118)
          at org.apache.cayenne.access.DataDomain.createDataContext(DataDomain.java:601)

          "DefaultQuartzScheduler_Worker-1" prio=10 tid=0x00002aab7b157c00 nid=0xc17 runnable [0x0000000043159000..0x000000004315
          9b30]
          java.lang.Thread.State: RUNNABLE
          at org.apache.commons.collections.map.AbstractReferenceMap$ReferenceEntrySetIterator.hasNext(AbstractReferenceM
          ap.java:736)
          at org.apache.cayenne.access.ObjectStore.postprocessAfterCommit(ObjectStore.java:442)
          at org.apache.cayenne.access.DataDomainFlushAction.postprocess(DataDomainFlushAction.java:258)
          at org.apache.cayenne.access.DataDomainFlushAction.flush(DataDomainFlushAction.java:150)

          • locked <0x00002aaab91a5c40> (a org.apache.cayenne.access.DataRowStore)
            at org.apache.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:821)
            at org.apache.cayenne.access.DataDomain$2.transform(DataDomain.java:788)
            at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:847)
            at org.apache.cayenne.access.DataDomain.onSync(DataDomain.java:785)
            at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1175)
          • locked <0x00002aaad54ae3e8> (a org.apache.cayenne.access.ObjectStore)
            at org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:1088)
          Show
          Tore Halset added a comment - In the same thread dump, there were some other RUNNABLE that also looked strange. I do not know if those are relevant. "TP-Processor12" daemon prio=10 tid=0x00002aab77946400 nid=0x166d runnable [0x0000000044d74000..0x0000000044d75db0] java.lang.Thread.State: RUNNABLE at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2427) at java.lang.Class.getDeclaredMethod(Class.java:1935) at org.apache.cayenne.util.Invocation.lookupMethodInHierarchy(Invocation.java:134) at org.apache.cayenne.util.Invocation.<init>(Invocation.java:111) at org.apache.cayenne.util.Invocation.<init>(Invocation.java:65) at org.apache.cayenne.event.EventManager$NonBlockingInvocation.<init>(EventManager.java:436) at org.apache.cayenne.event.EventManager.addListener(EventManager.java:216) at org.apache.cayenne.event.EventManager.addNonBlockingListener(EventManager.java:192) at org.apache.cayenne.access.ObjectStore.setDataRowCache(ObjectStore.java:262) at org.apache.cayenne.access.ObjectStore.<init>(ObjectStore.java:129) at org.apache.cayenne.access.ObjectStore.<init>(ObjectStore.java:118) at org.apache.cayenne.access.DataDomain.createDataContext(DataDomain.java:601) "TP-Processor11" daemon prio=10 tid=0x00002aab77945800 nid=0x166c runnable [0x0000000044c73000..0x0000000044c74b30] java.lang.Thread.State: RUNNABLE at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2427) at java.lang.Class.getDeclaredMethod(Class.java:1935) at org.apache.cayenne.util.Invocation.lookupMethodInHierarchy(Invocation.java:134) at org.apache.cayenne.util.Invocation.<init>(Invocation.java:111) at org.apache.cayenne.util.Invocation.<init>(Invocation.java:65) at org.apache.cayenne.event.EventManager$NonBlockingInvocation.<init>(EventManager.java:436) at org.apache.cayenne.event.EventManager.addListener(EventManager.java:216) at org.apache.cayenne.event.EventManager.addNonBlockingListener(EventManager.java:192) at org.apache.cayenne.access.ObjectStore.setDataRowCache(ObjectStore.java:262) at org.apache.cayenne.access.ObjectStore.<init>(ObjectStore.java:129) at org.apache.cayenne.access.ObjectStore.<init>(ObjectStore.java:118) at org.apache.cayenne.access.DataDomain.createDataContext(DataDomain.java:601) "TP-Processor7" daemon prio=10 tid=0x00002aab798c1800 nid=0xc30 runnable [0x0000000044067000..0x0000000044068ab0] java.lang.Thread.State: RUNNABLE at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2427) at java.lang.Class.getDeclaredMethod(Class.java:1935) at org.apache.cayenne.util.Invocation.lookupMethodInHierarchy(Invocation.java:134) at org.apache.cayenne.util.Invocation.<init>(Invocation.java:111) at org.apache.cayenne.util.Invocation.<init>(Invocation.java:65) at org.apache.cayenne.event.EventManager$NonBlockingInvocation.<init>(EventManager.java:436) at org.apache.cayenne.event.EventManager.addListener(EventManager.java:216) at org.apache.cayenne.event.EventManager.addNonBlockingListener(EventManager.java:192) at org.apache.cayenne.access.ObjectStore.setDataRowCache(ObjectStore.java:262) at org.apache.cayenne.access.ObjectStore.<init>(ObjectStore.java:129) at org.apache.cayenne.access.ObjectStore.<init>(ObjectStore.java:118) at org.apache.cayenne.access.DataDomain.createDataContext(DataDomain.java:601) "DefaultQuartzScheduler_Worker-1" prio=10 tid=0x00002aab7b157c00 nid=0xc17 runnable [0x0000000043159000..0x000000004315 9b30] java.lang.Thread.State: RUNNABLE at org.apache.commons.collections.map.AbstractReferenceMap$ReferenceEntrySetIterator.hasNext(AbstractReferenceM ap.java:736) at org.apache.cayenne.access.ObjectStore.postprocessAfterCommit(ObjectStore.java:442) at org.apache.cayenne.access.DataDomainFlushAction.postprocess(DataDomainFlushAction.java:258) at org.apache.cayenne.access.DataDomainFlushAction.flush(DataDomainFlushAction.java:150) locked <0x00002aaab91a5c40> (a org.apache.cayenne.access.DataRowStore) at org.apache.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:821) at org.apache.cayenne.access.DataDomain$2.transform(DataDomain.java:788) at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:847) at org.apache.cayenne.access.DataDomain.onSync(DataDomain.java:785) at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1175) locked <0x00002aaad54ae3e8> (a org.apache.cayenne.access.ObjectStore) at org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:1088)
          Hide
          Andrus Adamchik added a comment -

          Presumably fixed by CAY-1670. Appreciate feedback.

          Show
          Andrus Adamchik added a comment - Presumably fixed by CAY-1670 . Appreciate feedback.

            People

            • Assignee:
              Tore Halset
              Reporter:
              Tore Halset
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development