You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cayenne.apache.org by "Andrus Adamchik (JIRA)" <de...@cayenne.apache.org> on 2007/10/03 12:00:56 UTC

[JIRA] Created: (CAY-870) Race condition in ClassDescriptorMap

Race condition in ClassDescriptorMap
------------------------------------

                 Key: CAY-870
                 URL: https://issues.apache.org/cayenne/browse/CAY-870
             Project: Cayenne
          Issue Type: Bug
          Components: Cayenne Core Library
    Affects Versions: 3.0
         Environment: Cayenne 3.0 (trunk build sometime after M1)
            Reporter: Andrus Adamchik
            Assignee: Andrus Adamchik
             Fix For: 3.0


Not sure if 1.2/2.0 is affected...

I am seeing my app getting stuck on startup occasionally. Thread dump shows a few threads stuck in trying to get a class descriptor (see below). This is similar to CAY-845, only happens in a different place. Looks like ClassDescriptorMap lazy initialization can cause such race condition.


at java.util.HashMap.get(HashMap.java:346)
        at org.apache.cayenne.reflect.ClassDescriptorMap.getDescriptor(ClassDescriptorMap.java:92)
        at org.apache.cayenne.reflect.generic.DataObjectDescriptorFactory.createToManyProperty(DataObjectDescriptorFactory.java:68)
        at org.apache.cayenne.reflect.PersistentDescriptorFactory.getDescriptor(PersistentDescriptorFactory.java:96)
        at org.apache.cayenne.reflect.generic.DataObjectDescriptorFactory.getDescriptor(DataObjectDescriptorFactory.java:51)
        at org.apache.cayenne.reflect.PersistentDescriptorFactory.getDescriptor(PersistentDescriptorFactory.java:51)
        at org.apache.cayenne.reflect.ClassDescriptorMap.createDescriptor(ClassDescriptorMap.java:122)
        at org.apache.cayenne.reflect.LazyClassDescriptorDecorator.checkDescriptorInitialized(LazyClassDescriptorDecorator.java:49)
        at org.apache.cayenne.reflect.LazyClassDescriptorDecorator.getEntity(LazyClassDescriptorDecorator.java:73)
        at org.apache.cayenne.access.trans.SelectTranslator.appendQueryColumns(SelectTranslator.java:357)
        at org.apache.cayenne.access.trans.SelectTranslator.buildResultColumns(SelectTranslator.java:332)
        at org.apache.cayenne.access.trans.SelectTranslator.createSqlString(SelectTranslator.java:107)
        at org.apache.cayenne.dba.mysql.MySQLSelectTranslator.createSqlString(MySQLSelectTranslator.java:31)
        at org.apache.cayenne.access.trans.QueryAssembler.createStatement(QueryAssembler.java:95)
        at org.apache.cayenne.access.jdbc.SelectAction.performAction(SelectAction.java:71)
        at org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:57)


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.