jgrassel opened a new pull request #64:
URL: https://github.com/apache/openjpa/pull/64


   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 is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to