EntityManagerFactory is not thread-safe
---------------------------------------
Key: OPENJPA-437
URL: https://issues.apache.org/jira/browse/OPENJPA-437
Project: OpenJPA
Issue Type: Bug
Components: kernel
Affects Versions: 1.0.0, 1.0.1, 1.0.2, 1.1.0
Reporter: Kevin Sutter
Assignee: Kevin Sutter
Fix For: 1.0.2, 1.1.0
Under certain conditions, we have discovered that the EntityManagerFactory is
not thread safe when creating EntityManagers. The problem is in the
loadPersistentTypes method of the AbstractBrokerFactory. There is an
unprotected data structure (_pcClassNames) that can various problems
(NullPointerException, IndexOutOfBoundsException, etc) when attempting to add
new elements to the ArrayList. Other similar datastructures in this part are
properly synchronized (_pcClassLoaders for example), but somehow we missed this
one.
A common scenario where this might be encountered is if your SLSB has an
injected PersistenceUnit (EntityManagerFactory), but is attempting to create
the EntityManager during a post-bean creation method (@PostConstruct). In this
case, the SLSB instances are probably using the same EMF instance (of course
this would depend on your application server implementation). If you have this
type of environment, then hitting these SLSB's with multiple clients could get
you into this situation.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.