cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Oleg Artyukevich (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CAY-1868) Select contention with multiple contexts
Date Thu, 26 Dec 2013 09:59:50 GMT

     [ 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)

Mime
View raw message