[
https://issues.apache.org/jira/browse/OPENJPA-2257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13448979#comment-13448979
]
Albert Lee commented on OPENJPA-2257:
-------------------------------------
The problem is caused by the assumption that the configurationImpl obtained
from emf is threadsafe since all the configuration values are frozen once the
emf is created. However the broker getProperty() implementation defers the
building up of the property key collection (_supportedKeys) in the
configurationImpl when it is needed, but the _supportedKeys is not
synchronized( thread safe), hence the observed exceptions.
> Concurreny in org.apache.openjpa.persistence.EntityManagerImpl.getProperties
> leads to NullPointer and ConcurrentModificationException
> -------------------------------------------------------------------------------------------------------------------------------------
>
> Key: OPENJPA-2257
> URL: https://issues.apache.org/jira/browse/OPENJPA-2257
> Project: OpenJPA
> Issue Type: Bug
> Components: jpa
> Affects Versions: 2.1.2
> Environment: AIX 6.1 (64-bit)
> WebSphere Application Server V8.0 (32-bit)
> Reporter: Stephan Hagedorn
> Labels: concurrency, concurrentmodificationexception,
> nullpointerexception
> Attachments: OpenJPABugTest.zip
>
>
> A call of EntityManager.getProperties() can lead to NullPointer and
> ConcurrentModificationException. Issue occurs right after start up of the
> overlying JEE application if multiple EntityManager instance are created at
> same time.
> Please find the issued stack trace below:
> Caused by: java.lang.NullPointerException
> at java.lang.String.compareTo(String.java:482)
> at java.lang.String.compareTo(String.java:31)
> at java.util.TreeMap.cmp(TreeMap.java:4514)
> at java.util.TreeMap.putImpl(TreeMap.java:4556)
> at java.util.TreeMap.put(TreeMap.java:4536)
> at java.util.TreeSet.add(TreeSet.java:122)
> at
> org.apache.openjpa.lib.conf.ConfigurationImpl.getPropertyKeys(ConfigurationImpl.java:708)
> at
> org.apache.openjpa.kernel.BrokerImpl.getSupportedProperties(BrokerImpl.java:729)
> at
> org.apache.openjpa.kernel.DelegatingBroker.getSupportedProperties(DelegatingBroker.java:223)
> at
> org.apache.openjpa.persistence.EntityManagerImpl.getProperties(EntityManagerImpl.java:1624)
> ... 33 more
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira