[ 
https://issues.apache.org/jira/browse/CAY-1868?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Oleg Artyukevich updated CAY-1868:
----------------------------------

    Attachment: cay1868v3_1.patch

Hi, Andrus. Send another one patch for Cayenne 3.1 . Changes in synchronized 
methods of ObjRelationship class.

> 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.1B2, 3.2M1
>            Reporter: Andrus Adamchik
>            Assignee: Andrus Adamchik
>             Fix For: 3.1B3, 3.2.M2
>
>         Attachments: cay1868.patch, cay1868v3_1.patch
>
>
> 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 was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to