[ https://issues.apache.org/jira/browse/OPENJPA-2817?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17156804#comment-17156804 ]
Jody Grassel commented on OPENJPA-2817: --------------------------------------- Pull request for 2.2.x branch: https://github.com/jgrassel/openjpa/pull/new/OPENJPA_2817_22X > 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)