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.

Reply via email to