[ https://issues.apache.org/jira/browse/OPENJPA-2817?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17163889#comment-17163889 ]
ASF subversion and git services commented on OPENJPA-2817: ---------------------------------------------------------- Commit 9e665c06c3c922ce27b14e3831dda8720f12355c in openjpa's branch refs/heads/OPENJPA-2817_PCClassFileTransformer-exclusions from Romain Manni-Bucau [ https://gitbox.apache.org/repos/asf?p=openjpa.git;h=9e665c0 ] Merge branch 'master' into OPENJPA-2817_PCClassFileTransformer-exclusions > 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 > Fix For: 2.2.3 > > > 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)