[hibernate-dev] WildFly tests with ByteBuddy enhancement are failing
Scott Marlow
smarlow at redhat.com
Fri Mar 22 09:11:50 EDT 2019
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'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