Jody Grassel created OPENJPA-2817:
-------------------------------------
Summary: OpenJPA enhancer needs improved reentrancy
Key: OPENJPA-2817
URL: https://issues.apache.org/jira/browse/OPENJPA-2817
Project: OpenJPA
Issue Type: Bug
Components: Enhance
Affects Versions: 3.1.1, 2.4.3, 2.3.0, 2.2.2
Reporter: Jody Grassel
Assignee: Jody Grassel
OpenJPA's class transformer was designed in a time when ClassLoader access was
synchronized. Because it was assumed that if the ClassLoader caused another
class to load while it was already enhancing a class, causing another
triggering of the class transformer, it was assumed that that could only happen
if OpenJPA was bundled as part of the application (loaded by the app
classloader in an EE environment), and was safe to assume that this reentrant
invocation would not be a request to enhance a persistent type, and thus return
null (no enhancement needed).
With Java 7+, ClassLoader locking has been changed
([https://docs.oracle.com/javase/7/docs/technotes/guides/lang/cl-mt.html]).
Now, because the same ClassLoader (and thus same transformer), can be invoked
concurrently by different threads, this assumption was no longer valid.
OpenJPA needs to be updated to be mindful of reentrancy on a thread scope,
instead of just simply reacting to reentrancy whenever it happens.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)