The MetaDataRepository class is not thread safe. Initialization under heavy
load on a multi CPU/Core systems throws exceptions.
--------------------------------------------------------------------------------------------------------------------------------
Key: OPENJPA-324
URL: https://issues.apache.org/jira/browse/OPENJPA-324
Project: OpenJPA
Issue Type: Bug
Components: kernel
Affects Versions: 0.9.7, 0.9.6
Environment: I have reproduced the problem in Windows and in Solaris.
It only affects multi core/CPU systems. I haven't reproduced the problem on
single core systems.
I am using Spring 2.0.2 and OpenJPA 0.9.6 with an Oracle 10g database.
Reporter: Chris Ward
OpenJPA's MetaDataRepository fails to load metadata for classess when multiple
threads use the same EntityManagerFactory class to resolve the metadata. The
MetaDataRepository implementation is not thread safe.The problem only occurrs
on multi core or multi processor machines that can concurrently try to
initialize meta data for classes.
To reproduce the problem I have inserted a sleep statement within the code to
help reproduce the problem consistently. I have commented out the sleep
statement in my deployed version of the class.
This bug is sort of related to issue 250. I have cleaned up all of the
synchronization in the class. There should be less contention, however it
could still be better if a ReentrantReadWriteLock was used. I noticed that
someone had posted a new MetaDataRepository with a ReentrantReadWriteLock, but
too seems to have the same issues.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.