[ https://issues.apache.org/jira/browse/OPENJPA-2817?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Romain Manni-Bucau reopened OPENJPA-2817: ----------------------------------------- reopening for 3.1.3 which likely needs to drop _transforming as well - once we have the actual cause of this issue (current analyzis suspects an OpenLiberty classloading bug but we didn't get something concrete yet). > 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)