[hibernate-dev] WildFly tests with ByteBuddy enhancement are failing

Scott Marlow smarlow at redhat.com
Fri Mar 22 09:24:21 EDT 2019



On 3/22/19 9:11 AM, Scott Marlow wrote:
> 
> 
> On 3/22/19 7:49 AM, Guillaume Smet wrote:
>> Hi Gail,
>>
>> Do we have any idea of what this class is supposed to be:
>> org.jboss.as.test.integration.jpa.basic.SLSBPersistenceContexts$$$view5 ?
> 
> This is a unit test class that is not an entity class, but instead it 
> happens to be an EJB stateless session bean.  In the exception call 
> stack [1], the class that ByteBuddy complains about is a WildFly class 
> (not even a test class), you can see that in the exception message 
> SerializationProxyHackImplementation [2].
> 
>> Scott, any idea?
> 
> I was not really aware that classes like 
> SerializationProxyHackImplementation [2] , would also be handled by 
> org.jboss.as.server.deployment.module.DelegatingClassFileTransformer.transform() 
> but I guess that makes sense, as application classloaders versus 
> application module classloaders, are not distinguished internally in WF.

I meant that class file transformers will be called for both application 
classes and WF classes as well.

> 
> I'm also not sure of how Javassist handles ignoring the 
> SerializationProxyHackImplementation [2] class but Javassist does work 
> fine (as long as you work around the other issue, which is that 
> Javassist can only be selected via system property setting but not 
> persistence.xml setting, also mentioned in WFLY-11891 [3]).
> 
>>
>> Because it doesn't ring a bell on my side.
>>
>> I suspect it's a class we shouldn't access or touch. And we should 
>> probably
>> add a condition somewhere to avoid doing so.
> 
> Agreed.
> 
>>
>> If you can give me the Hibernate call which initiates the error, that 
>> would
>> be nice.
> 
> [1] shows the exception call stack (look for 
> "org.hibernate.bytecode.enhance.internal.bytebuddy.EnhancerImpl.lambda$enhance$0(EnhancerImpl.java:137)" 
> 
> 
> 
>>
>> And stupid question: we did not have any enhancement test in WildFly 
>> before
>> that?
>>
> 
> No, sadly, this is the first time we updated the WildFly unit tests to 
> try Javassist + ByteBuddy enhancement.  Its a very light test with 
> little verification, basically we just modified some existing tests to 
> include:
> 
> hibernate.enhancer.enableDirtyTracking=true
> hibernate.enhancer.enableLazyInitialization=true
> hibernate.enhancer.enableAssociationManagement=true
> 
> And one test was also modified to specify 
> hibernate.bytecode.provider=javassist, which is ignored (only the system 
> property works, via standalone.sh 
> -Dhibernate.bytecode.provider=javassist).  The problem is also mentioned 
> in WFLY-11891 [3].
> 
> In WF, we also have a mock persistence provider test that ensures that 
> persistence providers can enhance classes as per the JPA container 
> contract.
> 
> Scott
> 
> [1] 
> https://issues.jboss.org/browse/WFLY-11891?focusedCommentId=13711809&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13711809 
> 
> 
> [2] java.lang.IllegalStateException: Cannot resolve type description for 
> org.jboss.as.ejb3.SerializationProxyHackImplementation
> 
> [3] https://issues.jboss.org/browse/WFLY-11891


More information about the hibernate-dev mailing list