cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrus Adamchik (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CAY-1868) Select contention with multiple contexts
Date Tue, 03 Sep 2013 08:48:51 GMT
Andrus Adamchik created CAY-1868:
------------------------------------

             Summary: Select contention with multiple contexts 
                 Key: CAY-1868
                 URL: https://issues.apache.org/jira/browse/CAY-1868
             Project: Cayenne
          Issue Type: Bug
    Affects Versions: 3.2M1, 3.1B2
            Reporter: Andrus Adamchik
            Assignee: Andrus Adamchik
             Fix For: 3.1B3, 3.2M2


I am mostly using local cache and a single app-scoped ObjectContext for selects. So I was
oblivious to this issue. Today I tried shared cache and a pool of app-scoped ObjectContexts
randomly assigned to requests. I quickly hit a contention point:
 

   java.lang.Thread.State: BLOCKED (on object monitor)
        at org.apache.cayenne.map.ObjRelationship.refreshFromDeferredPath(ObjRelationship.java:572)
        - waiting to lock <0x424bf840> (a org.apache.cayenne.map.ObjRelationship)
        at org.apache.cayenne.map.ObjRelationship.isToMany(ObjRelationship.java:431)
        at org.apache.cayenne.map.ObjRelationship.isOptional(ObjRelationship.java:310)
        at org.apache.cayenne.map.ObjRelationship.isSourceDefiningTargetPrecenseAndType(ObjRelationship.java:346)
        at org.apache.cayenne.access.DataDomainQueryAction.interceptRelationshipQuery(DataDomainQueryAction.java:239)

ObjRelationship recalculating its 'toMany' value on every call is evil by itself. Doing parts
of it in a synchronized block is completely unacceptable. 
 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message