[ https://issues.apache.org/jira/browse/OPENJPA-2817?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17157536#comment-17157536 ]
ASF subversion and git services commented on OPENJPA-2817: ---------------------------------------------------------- Commit 763e20c3777be37df7eafc62f3b103d524f51704 in openjpa's branch refs/heads/OPENJPA-2817_PCClassFileTransformer-exclusions from Romain Manni-Bucau [ https://gitbox.apache.org/repos/asf?p=openjpa.git;h=763e20c ] OPENJPA-2817 dropping _transforming from PCClassFileTransformer and replace it by a minimal exclusion list > 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)