[ 
https://issues.apache.org/jira/browse/OPENJPA-2817?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17156808#comment-17156808
 ] 

Jody Grassel commented on OPENJPA-2817:
---------------------------------------

Github pull request for 2.2.x branch: 
[https://github.com/apache/openjpa/pull/64]

> 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: 2.2.2, 2.3.0, 2.4.3, 3.1.1
>            Reporter: Jody Grassel
>            Assignee: Jody Grassel
>            Priority: Major
>
> 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)

Reply via email to