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

Scott Marlow smarlow at redhat.com
Tue Mar 26 09:53:07 EDT 2019


Hi Tomek,

I think the pending question now is why ByteBuddy is getting a null 
result from the 
classLoader.getResourceAsStream("org/jboss/as/test/integration/jpa/basic/SLSBPersistenceContexts$$$view5.class") 
call.

We have also seen failures for 
org.jboss.as.ejb3.SerializationProxyHackImplementation as well, which is 
also generated by the EJB container (see exception call stack in 
https://issues.jboss.org/browse/WFLY-11891).

I wonder if this could be an ordering bug where classes generated via 
JBoss ClassFileWriter are added to the classloader list of classes, 
before the actual bytecode is added.

Scott

On 3/26/19 9:17 AM, Tomasz Adamski wrote:
> Hi Scott,
> 
> Added to my TODO. WIll try to look at it this week.
> 
> Regards,
> Tomek
> 
> On Mon, Mar 25, 2019 at 5:14 PM Scott Marlow <smarlow at redhat.com 
> <mailto:smarlow at redhat.com>> wrote:
> 
>     Adding Tomek + Cheng, as they have been working on the WildFly EJB
>     layer
>     recently, which seems to use
>     https://github.com/jbossas/jboss-classfilewriter for generating the EJB
>     stub classes like
>     org/jboss/as/test/integration/jpa/basic/SLSBPersistenceContexts$$$view5.class.
> 
>     Perhaps Tomek or Cheng, can answer whether WildFly (EJB layer) or
>     ByteBuddy should change to handle dynamically generated classes
>     differently.
> 
>     In other words, should ByteBuddy respond differently to
>     classLoader.getResourceAsStream("org/jboss/as/test/integration/jpa/basic/SLSBPersistenceContexts$$$view5.class")
> 
>     returning null or should the jboss-classfilewriter project somehow
>     avoid
>     this bug.
> 
>     Scott
> 
>     On 3/22/19 2:54 AM, Gail Badner wrote:
>      > Scott added bytecode enhancement to some WildFly tests for
>     WFLY-11891 [1],
>      > which are failing.
>      >
>      > Here is Scott's PR with the updated tests: [2]
>      >
>      > When I stepped into
>      >
>     org.jboss.as.test.integration.jpa.basic.multiplepersistenceunittest.MultiplePuTestCase,
>      > I can see that they are failing in ByteBuddy code.
>      >
>      > I see that:
>      >
>      >     -  enhancement of
>      >   
>       org.jboss.as.test.integration.jpa.basic.SLSBPersistenceContexts gets
>      >     skipped several times in a row;
>      >     - enhancement of some other classes get skipped;
>      >     - before trying to enhance
>      >   
>       org.jboss.as.test.integration.jpa.basic.SLSBPersistenceContexts$$$view5, an
>      >     exception is thrown.
>      >
>      > Unfortunately, I'm having trouble getting a good stacktrace to
>     show what
>      > happens in ByteBuddy code.
>      >
>      > Here is what I'm seeing:
>      >
>      >
>     net.bytebuddy.pool.TypePool$Default.doDescribe("org.jboss.as.test.integration.jpa.basic.SLSBPersistenceContexts$$$view5")
>      > /* class name differs from run to run */
>      >
>      >
>      > calls net.bytebuddy.dynamic.ClassFileLocator$ForClassLoader.locate( "
>      >
>     org.jboss.as.test.integration.jpa.basic.SLSBPersistenceContexts$$$view5")
>      >
>      > calls net.bytebuddy.dynamic.ClassFileLocator.ForClassLoader.locate(
>      > classLoader,
>     "org.jboss.as.test.integration.jpa.basic.SLSBPersistenceContexts$$$view5"
>      > )
>      >
>      > calls
>      >
>     classLoader.getResourceAsStream("org/jboss/as/test/integration/jpa/basic/SLSBPersistenceContexts$$$view5.class"),
>      > which returns null;
>      >
>      > (I don't actually see a class file with this name)
>      >
>      >
>      > returns new TypePool.Resolution.Illegal(
>      >
>      >
>     "org/jboss/as/test/integration/jpa/basic/SLSBPersistenceContexts$$$view5.class"
>      >
>      > )
>      >
>      > returns TypePool.Resolution.Illegal
>      >
>      >
>      > Ultimately, TypePool.Resolution.Illegal#resolve( ) throws
>      > IllegalStateException, because the type description cannot be
>     resolved.
>      >
>      > I'm not sure if the problem is in WildFly, Hibernate, or ByteBuddy.
>      >
>      > To build WildFly:
>      > ./build.sh clean install -DskipTests=true
>      >
>      > To run the test:
>      > cd testsuite/integration/basic
>      > mvn install
>      >
>     -Dtest=org/jboss/as/test/integration/jpa/basic/multiplepersistenceunittest/MultiplePuTestCase
>      >
>      > Help would be very much appreciated.
>      >
>      > Thanks,
>      > Gail
>      >
>      > [1] https://issues.jboss.org/browse/WFLY-11891
>      > [2] https://github.com/wildfly/wildfly/pull/12180
>      > _______________________________________________
>      > hibernate-dev mailing list
>      > hibernate-dev at lists.jboss.org <mailto:hibernate-dev at lists.jboss.org>
>      > https://lists.jboss.org/mailman/listinfo/hibernate-dev
>      >
> 
> 
> 
> -- 
> Regards,
> Tomek


More information about the hibernate-dev mailing list