Kevin Sutter wrote:
> 
> This topic has come up recently due to some potential
> locking issues (serialized access) when reading the metadata repository in
> a
> multi-threaded environment.
> 

Do you have any details (JIRA issue?) about the locking issues? We are
seeing a lot of locked threads on MetaDataRepository.getMetaData under load
with data caching enabled (OpenJPA 1.2.1)

Is there anything we can do about this? It is reducing our ability to scale
performance. Here's some of the stack trace:


[TDNum36] "[ACTIVE] ExecuteThread: '56' for queue: 'weblogic.kernel.Default
(self-tuning)'" daemon prio=1 tid=0x36a22b20 nid=0x7c1c runnable
[0x25cea000..0x25cecda0]
[TDNum36]     at java.lang.Class.isAssignableFrom(Native Method)
[TDNum36]     at
org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:285)
[TDNum36]     - locked <0x72d44cb8> (a
org.apache.openjpa.jdbc.meta.MappingRepository)
[TDNum36]     at
org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:994)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.newStateManagerImpl(BrokerImpl.java:1179)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.findAll(BrokerImpl.java:964)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.findAll(BrokerImpl.java:913)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toRelationFields(AbstractPCData.java:225)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toNestedFields(AbstractPCData.java:192)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toField(AbstractPCData.java:78)
[TDNum36]     at
org.apache.openjpa.kernel.PCDataImpl.loadField(PCDataImpl.java:197)
[TDNum36]     at
org.apache.openjpa.kernel.PCDataImpl.load(PCDataImpl.java:147)
[TDNum36]     at
org.apache.openjpa.datacache.DataCacheStoreManager.initialize(DataCacheStoreManager.java:347)
[TDNum36]     at
org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
[TDNum36]     at
org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:894)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:852)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:774)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toRelationField(AbstractPCData.java:216)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toNestedField(AbstractPCData.java:150)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toField(AbstractPCData.java:127)
[TDNum36]     at
org.apache.openjpa.kernel.PCDataImpl.loadField(PCDataImpl.java:197)
[TDNum36]     at
org.apache.openjpa.kernel.PCDataImpl.load(PCDataImpl.java:147)
[TDNum36]     at
org.apache.openjpa.datacache.DataCacheStoreManager.loadAll(DataCacheStoreManager.java:484)
[TDNum36]     at
org.apache.openjpa.kernel.DelegatingStoreManager.loadAll(DelegatingStoreManager.java:121)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.findAll(BrokerImpl.java:984)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.findAll(BrokerImpl.java:913)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toRelationFields(AbstractPCData.java:225)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toNestedFields(AbstractPCData.java:192)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toField(AbstractPCData.java:78)
[TDNum36]     at
org.apache.openjpa.kernel.PCDataImpl.loadField(PCDataImpl.java:197)
[TDNum36]     at
org.apache.openjpa.kernel.PCDataImpl.load(PCDataImpl.java:147)
[TDNum36]     at
org.apache.openjpa.datacache.DataCacheStoreManager.initialize(DataCacheStoreManager.java:347)
[TDNum36]     at
org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
[TDNum36]     at
org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:894)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:852)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:774)
[TDNum36]     at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:918)
[TDNum36]     at
org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:278)
[TDNum36]     at
org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2400)
[TDNum36]     at
org.apache.openjpa.jdbc.meta.strats.RelationFieldStrategy.loadEagerJoin(RelationFieldStrategy.java:541)
[TDNum36]     at
org.apache.openjpa.jdbc.meta.FieldMapping.loadEagerJoin(FieldMapping.java:807)
[TDNum36]     at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:967)
[TDNum36]     at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:948)
[TDNum36]     at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:927)
[TDNum36]     at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:364)
[TDNum36]     at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:278)
[TDNum36]     at
org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
[TDNum36]     at
org.apache.openjpa.datacache.DataCacheStoreManager.initialize(DataCacheStoreManager.java:340)
[TDNum36]     at
org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
[TDNum36]     at
org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:894)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:852)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:774)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toRelationField(AbstractPCData.java:216)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toNestedField(AbstractPCData.java:150)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toField(AbstractPCData.java:127)
[TDNum36]     at
org.apache.openjpa.kernel.PCDataImpl.loadField(PCDataImpl.java:197)
[TDNum36]     at
org.apache.openjpa.kernel.PCDataImpl.load(PCDataImpl.java:147)
[TDNum36]     at
org.apache.openjpa.datacache.DataCacheStoreManager.initialize(DataCacheStoreManager.java:347)
[TDNum36]     at
org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
[TDNum36]     at
org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:894)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:852)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:774)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toRelationField(AbstractPCData.java:216)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toNestedField(AbstractPCData.java:150)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toField(AbstractPCData.java:127)
[TDNum36]     at
org.apache.openjpa.kernel.PCDataImpl.loadField(PCDataImpl.java:197)
[TDNum36]     at
org.apache.openjpa.kernel.PCDataImpl.load(PCDataImpl.java:147)
[TDNum36]     at
org.apache.openjpa.datacache.DataCacheStoreManager.loadAll(DataCacheStoreManager.java:484)
[TDNum36]     at
org.apache.openjpa.kernel.DelegatingStoreManager.loadAll(DelegatingStoreManager.java:121)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.findAll(BrokerImpl.java:984)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.findAll(BrokerImpl.java:913)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toRelationFields(AbstractPCData.java:225)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toNestedFields(AbstractPCData.java:192)
[TDNum36]     at
org.apache.openjpa.kernel.AbstractPCData.toField(AbstractPCData.java:78)
[TDNum36]     at
org.apache.openjpa.kernel.PCDataImpl.loadField(PCDataImpl.java:197)
[TDNum36]     at
org.apache.openjpa.kernel.PCDataImpl.load(PCDataImpl.java:147)
[TDNum36]     at
org.apache.openjpa.datacache.DataCacheStoreManager.initialize(DataCacheStoreManager.java:347)
[TDNum36]     at
org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
[TDNum36]     at
org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:894)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:852)
[TDNum36]     at
org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:774)
[TDNum36]     at
org.apache.openjpa.datacache.QueryCacheStoreQuery.fromObjectId(QueryCacheStoreQuery.java:203)
[TDNum36]     at
org.apache.openjpa.datacache.QueryCacheStoreQuery.access$200(QueryCacheStoreQuery.java:58)
[TDNum36]     at
org.apache.openjpa.datacache.QueryCacheStoreQuery$CachedList.get(QueryCacheStoreQuery.java:461)
[TDNum36]     at
org.apache.openjpa.lib.rop.ListResultObjectProvider.getResultObject(ListResultObjectProvider.java:55)
[TDNum36]     at
org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
[TDNum36]     at
org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1228)
[TDNum36]     at
org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:990)
[TDNum36]     at
org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:805)
[TDNum36]     at
org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:775)
[TDNum36]     at
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
[TDNum36]     at
org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:252)
[TDNum36]     at
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:294)

-- 
View this message in context: 
http://n2.nabble.com/correct-way-to-load-persistent-metadata-at-startup-tp2865060p3014458.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.

Reply via email to