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

Nikita Timofeev closed CAY-2678.
--------------------------------
      Assignee: Nikita Timofeev
    Resolution: Fixed

*4.1*: 
https://github.com/apache/cayenne/commit/241d544b37514e654f4254feb60612f96afb740e
*4.2*: 
https://github.com/apache/cayenne/commit/22327d3891a70a27f83a396691a89fbbc476a536

> Inheritance warnings caused by unnecessary MappingCache creations during 
> initialization
> ---------------------------------------------------------------------------------------
>
>                 Key: CAY-2678
>                 URL: https://issues.apache.org/jira/browse/CAY-2678
>             Project: Cayenne
>          Issue Type: Bug
>          Components: Core Library
>    Affects Versions: 4.1
>            Reporter: Stefan S.
>            Assignee: Nikita Timofeev
>            Priority: Minor
>             Fix For: 4.1.1, 4.2.M3
>
>
> In my case, a lot of warnings labeled "No super entity mapping for 
> 'superOEName'" floods the log during Cayenne start-up. The project consists 
> of multiple DataMaps, where some object entities in early loaded DataMaps are 
> derived from object entities declared in DataMaps loaded later. Although the 
> MappingCache is refreshed after all DataMaps are loaded, a cache instance is 
> created / accessed while adding DataMaps (see call stack below).
>  
> *In Detail:*
> {code:java}
> org.apache.cayenne.map.EntityResolver::addDataMap(...)
> {code}
> checks for duplicated names (checkForDuplicatedNames()), which queries the DB 
> entities via
> {code:java}
> EntityResolver::getDbEntity(...)
> {code}
> EntityResolver::getDbEntity(...) resolves the entity from the MappingCache 
> instance, which contains only DataMaps loaded so far. The cache tries to 
> fully resolve the object entities including their inheritance tree, which is 
> not yet available due to DataMaps loaded at a later point in time.
>  
> *Resolution Proposal:*
> Decoupling of entity resolution for duplicate name checks during DataMap 
> loading from building the cache with fully resolved object entities after all 
> DataMaps have been loaded.
>  
> *Call-Stack:*
> Thread [AWT-EventQueue-0] (Suspended (breakpoint at line 112 in 
> MappingCache)) Thread [AWT-EventQueue-0] (Suspended (breakpoint at line 112 
> in MappingCache)) owns: EntityResolver$1  (id=1307) owns: EntityResolver  
> (id=68) MappingCache.index() line: 112 
> MappingCache.<init>(Collection<DataMap>) line: 65 
> EntityResolver$1.createDelegate() line: 417 EntityResolver$1.createDelegate() 
> line: 413 EntityResolver$1(ProxiedMappingNamespace).getDelegate() line: 38 
> EntityResolver$1(ProxiedMappingNamespace).getDbEntity(String) line: 69 
> EntityResolver.getDbEntity(String) line: 255 
> EntityResolver.checkForDuplicatedNames(DataMap) line: 375 
> EntityResolver.addDataMap(DataMap) line: 360 
> ProjectController.updateEntityResolver() line: 313 
> ProjectController.setProject(Project) line: 303 
> CayenneModelerController.projectOpenedAction(Project) line: 207 
> OpenProjectAction.openProjectResourse(Resource, CayenneModelerController) 
> line: 184 OpenProjectAction.openProject(File) line: 175 Main$1.run() line: 100



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to