5 Replies Latest reply on Jul 20, 2007 6:58 AM by adrian.brock

    AOP Testsuite nearly fixed in JBoss-Head

      I've just about got the aop tests working in head.

      There's a problem when you re-run tests which tells me there is some
      broken caching going on. i.e. an NPE trying to retrieve a ClassLoader which
      has been undeployed.

      You get this monstrosity of an error message :-)

      16:20:27,605 ERROR [STDERR] java.rmi.ServerException: RuntimeException; nested exception is:
       java.lang.RuntimeException: Error generating joinpoint class for joinpoint Method[method=public java.lang.String org.jboss.test.aop.scoped.ear.ejb.ExampleSessionBean.getValue(java.lang.String)]
      16:20:27,605 ERROR [STDERR] at org.jboss.ejb.plugins.LogInterceptor.handleException(LogInterceptor.java:421)
      16:20:27,605 ERROR [STDERR] at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:209)
      16:20:27,605 ERROR [STDERR] at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:138)
      16:20:27,605 ERROR [STDERR] at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:651)
      16:20:27,605 ERROR [STDERR] at org.jboss.ejb.Container.invoke(Container.java:989)
      16:20:27,605 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      16:20:27,605 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      16:20:27,605 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      16:20:27,605 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:585)
      16:20:27,605 ERROR [STDERR] at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
      16:20:27,606 ERROR [STDERR] at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
      16:20:27,606 ERROR [STDERR] at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
      16:20:27,606 ERROR [STDERR] at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
      16:20:27,606 ERROR [STDERR] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
      16:20:27,606 ERROR [STDERR] at org.jboss.invocation.local.LocalInvoker$MBeanServerAction.invoke(LocalInvoker.java:169)
      16:20:27,606 ERROR [STDERR] at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:118)
      16:20:27,606 ERROR [STDERR] at org.jboss.invocation.InvokerInterceptor.invokeLocal(InvokerInterceptor.java:193)
      16:20:27,606 ERROR [STDERR] at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:179)
      16:20:27,606 ERROR [STDERR] at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61)
      16:20:27,606 ERROR [STDERR] at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:86)
      16:20:27,606 ERROR [STDERR] at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:112)
      16:20:27,606 ERROR [STDERR] at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:101)
      16:20:27,606 ERROR [STDERR] at $Proxy78.getValue(Unknown Source)
      16:20:27,606 ERROR [STDERR] at org.jboss.test.aop.scoped.ear.servlet.EarExampleServlet.service(EarExampleServlet.java:59)
      16:20:27,606 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      16:20:27,606 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
      16:20:27,606 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      16:20:27,606 ERROR [STDERR] at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
      16:20:27,606 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      16:20:27,606 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      16:20:27,606 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
      16:20:27,607 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
      16:20:27,607 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:177)
      16:20:27,607 ERROR [STDERR] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:105)
      16:20:27,607 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
      16:20:27,607 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
      16:20:27,607 ERROR [STDERR] at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
      16:20:27,607 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      16:20:27,607 ERROR [STDERR] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
      16:20:27,607 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
      16:20:27,607 ERROR [STDERR] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
      16:20:27,607 ERROR [STDERR] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
      16:20:27,607 ERROR [STDERR] at java.lang.Thread.run(Thread.java:595)
      16:20:27,607 ERROR [STDERR] Caused by: java.lang.RuntimeException: Error generating joinpoint class for joinpoint Method[method=public java.lang.String org.jboss.test.aop.scoped.ear.ejb.ExampleSessionBean.getValue(java.lang.String)]
      16:20:27,607 ERROR [STDERR] at org.jboss.aop.instrument.JoinPointGenerator.doGenerateJoinPointClass(JoinPointGenerator.java:294)
      16:20:27,607 ERROR [STDERR] at org.jboss.aop.instrument.JoinPointGenerator.access$200(JoinPointGenerator.java:74)
      16:20:27,607 ERROR [STDERR] at org.jboss.aop.instrument.JoinPointGenerator$GenerateJoinPointClassAction$2.generateJoinPointClass(JoinPointGenerator.java:1621)
      16:20:27,607 ERROR [STDERR] at org.jboss.aop.instrument.JoinPointGenerator.generateJoinPointClass(JoinPointGenerator.java:237)
      16:20:27,607 ERROR [STDERR] at org.jboss.aop.GeneratedClassAdvisor.generateJoinPointClass(GeneratedClassAdvisor.java:978)
      16:20:27,607 ERROR [STDERR] at org.jboss.test.aop.scoped.ear.ejb.ExampleSessionBean$ExampleSessionBeanAdvisor.getValue_N_8224850878432306306(ExampleSessionBean$ExampleSessionBeanAdvisor.java)
      16:20:27,607 ERROR [STDERR] at org.jboss.test.aop.scoped.ear.ejb.ExampleSessionBean.getValue(ExampleSessionBean.java)
      16:20:27,607 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      16:20:27,607 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      16:20:27,608 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      16:20:27,608 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:585)
      16:20:27,608 ERROR [STDERR] at org.jboss.invocation.Invocation.performCall(Invocation.java:386)
      16:20:27,619 ERROR [STDERR] at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:228)
      16:20:27,619 ERROR [STDERR] at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:158)
      16:20:27,619 ERROR [STDERR] at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:174)
      16:20:27,619 ERROR [STDERR] at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:63)
      16:20:27,619 ERROR [STDERR] at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:121)
      16:20:27,619 ERROR [STDERR] at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:350)
      16:20:27,619 ERROR [STDERR] at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181)
      16:20:27,619 ERROR [STDERR] at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:237)
      16:20:27,619 ERROR [STDERR] at org.jboss.ejb.plugins.security.PreSecurityInterceptor.invoke(PreSecurityInterceptor.java:105)
      16:20:27,619 ERROR [STDERR] at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
      16:20:27,619 ERROR [STDERR] ... 41 more
      16:20:27,619 ERROR [STDERR] Caused by: java.lang.RuntimeException:
       public org.jboss.test.aop.scoped.ear.ejb.JoinPoint_getValue_N_8224850878432306306_14 org.jboss.mx.loading.UnifiedClassLoader3@594008{ url=vfsfile:/home/ejort/jboss-head/testsuite/output/lib/aop-scopedear2.ear ,addedOrder=66}
       private transient org.jboss.test.aop.scoped.ear.interceptor.TestInterceptor around1 org.jboss.mx.loading.UnifiedClassLoader3@594008{ url=vfsfile:/home/ejort/jboss-head/testsuite/output/lib/aop-scopedear2.ear ,addedOrder=66}
       boolean initialisedLightweightInstanceAspects null
       boolean isForInstanceAdvisor null
       extends
      
       public static org.jboss.test.aop.scoped.ear.ejb.ExampleSessionBean$JoinPoint_getValue_N_8224850878432306306 org.jboss.mx.loading.UnifiedClassLoader3@594008{ url=vfsfile:/home/ejort/jboss-head/testsuite/output/lib/aop-scopedear2.ear ,addedOrder=66}
       boolean inconsistentArgs null
       public java.lang.String arg0 null
       protected transient org.jboss.test.aop.scoped.ear.ejb.ExampleSessionBean typedTargetObject org.jboss.mx.loading.UnifiedClassLoader3@594008{ url=vfsfile:/home/ejort/jboss-head/testsuite/output/lib/aop-scopedear2.ear ,addedOrder=66}
       protected transient org.jboss.aop.MethodInfo info org.jboss.system.server.NoAnnotationURLClassLoader@c9ba38
       extends
      
       public org.jboss.aop.joinpoint.MethodInvocation org.jboss.system.server.NoAnnotationURLClassLoader@c9ba38
       static final long serialVersionUID null
       protected [Ljava.lang.Object; arguments null
       protected long methodHash null
       protected java.rmi.MarshalledObject marshalledArguments null
       protected java.lang.reflect.Method advisedMethod null
       protected java.lang.reflect.Method unadvisedMethod null
       extends
      
       public abstract org.jboss.aop.joinpoint.InvocationBase org.jboss.system.server.NoAnnotationURLClassLoader@c9ba38
       static final long serialVersionUID null
       protected org.jboss.aop.metadata.SimpleMetaData metadata org.jboss.system.server.NoAnnotationURLClassLoader@c9ba38
       protected transient int currentInterceptor null
       protected transient [Lorg.jboss.aop.advice.Interceptor; interceptors org.jboss.system.server.NoAnnotationURLClassLoader@c9ba38
       protected transient org.jboss.aop.Advisor advisor org.jboss.system.server.NoAnnotationURLClassLoader@c9ba38
       protected transient java.util.Map responseContextInfo null
       protected transient java.lang.Object targetObject null
       protected transient org.jboss.aop.metadata.MetaDataResolver instanceResolver org.jboss.system.server.NoAnnotationURLClassLoader@c9ba38
      16:20:27,619 ERROR [STDERR] at org.jboss.aop.instrument.JoinPointGenerator.instantiateClass(JoinPointGenerator.java:314)
      16:20:27,619 ERROR [STDERR] at org.jboss.aop.instrument.JoinPointGenerator.doGenerateJoinPointClass(JoinPointGenerator.java:278)
      16:20:27,620 ERROR [STDERR] ... 62 more
      16:20:27,620 ERROR [STDERR] Caused by: java.lang.reflect.InvocationTargetException
      16:20:27,620 ERROR [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      16:20:27,620 ERROR [STDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
      16:20:27,620 ERROR [STDERR] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
      16:20:27,620 ERROR [STDERR] at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
      16:20:27,620 ERROR [STDERR] at org.jboss.aop.instrument.JoinPointGenerator.instantiateClass(JoinPointGenerator.java:309)
      16:20:27,620 ERROR [STDERR] ... 63 more
      16:20:27,620 ERROR [STDERR] Caused by: java.lang.NullPointerException
      16:20:27,620 ERROR [STDERR] at org.jboss.aop.deployment.ScopedClassLoaderDomain.getPerVmAspectWithNoParentDelegation(ScopedClassLoaderDomain.java:128)
      16:20:27,620 ERROR [STDERR] at org.jboss.aop.deployment.ScopedClassLoaderDomain.getPerVMAspect(ScopedClassLoaderDomain.java:101)
      16:20:27,620 ERROR [STDERR] at org.jboss.aop.Domain.getPerVMAspect(Domain.java:735)
      16:20:27,621 ERROR [STDERR] at org.jboss.aop.Domain.getPerVMAspect(Domain.java:721)
      16:20:27,621 ERROR [STDERR] at org.jboss.aop.advice.GeneratedAdvisorInterceptor.getAspectInstance(GeneratedAdvisorInterceptor.java:191)
      16:20:27,621 ERROR [STDERR] at org.jboss.aop.advice.GeneratedAdvisorInterceptor.getAspect(GeneratedAdvisorInterceptor.java:157)
      16:20:27,621 ERROR [STDERR] at org.jboss.aop.advice.GeneratedAdvisorInterceptor.getAspect(GeneratedAdvisorInterceptor.java:129)
      16:20:27,621 ERROR [STDERR] at org.jboss.test.aop.scoped.ear.ejb.JoinPoint_getValue_N_8224850878432306306_14.getAround1(JoinPoint_getValue_N_8224850878432306306_14.java)
      16:20:27,621 ERROR [STDERR] at org.jboss.test.aop.scoped.ear.ejb.JoinPoint_getValue_N_8224850878432306306_14.<init>(JoinPoint_getValue_N_8224850878432306306_14.java)
      


        • 1. Re: AOP Testsuite nearly fixed in JBoss-Head

          NOTE: This occurs with both the old code and my refactored code.

          • 2. Re: AOP Testsuite nearly fixed in JBoss-Head

            I improved the error reporting in this area and now I get a more reasonable
            explanation of the problem:

            19:19:23,836 ERROR [STDERR] Caused by: java.lang.IllegalStateException: ClassLoader has been undeployed: org.jboss.mx.loading.UnifiedClassLoader3@1689e12{ url=vfsfile:/home/ejort/jboss-head/testsuite/output/lib/aop-scopedear2.ear ,addedOrder=62}
            19:19:23,836 ERROR [STDERR] at org.jboss.aop.deployment.ScopedClassLoaderDomain.getScopedRepository(ScopedClassLoaderDomain.java:181)
            19:19:23,836 ERROR [STDERR] at org.jboss.aop.deployment.ScopedClassLoaderDomain.getPerVmAspectWithNoParentDelegation(ScopedClassLoaderDomain.java:121)
            19:19:23,836 ERROR [STDERR] at org.jboss.aop.deployment.ScopedClassLoaderDomain.getPerVMAspect(ScopedClassLoaderDomain.java:105)
            19:19:23,836 ERROR [STDERR] at org.jboss.aop.Domain.getPerVMAspect(Domain.java:735)
            19:19:23,836 ERROR [STDERR] at org.jboss.aop.Domain.getPerVMAspect(Domain.java:721)
            


            • 3. Re: AOP Testsuite nearly fixed in JBoss-Head

              The way this works is broken.
              It choose the first classloader in a HLR as the classloader for the
              ScopedClassLoaderDomain.

              But if that classloader is redeployed it still uses the old classloader (or not
              since it gced :-)

              I've hacked it so there is now a Domain.isValid() which checks to see
              whether the classloader is still useable.

              This fixes the tests.

              But this HACK is also broken. A HLR can have multiple classloaders
              and we don't want to throw away a scoped domain just because one of the
              classloaders is redeployed.

              So the fix only works for the simple usecase where a HLR has one classloader.

              • 4. Re: AOP Testsuite nearly fixed in JBoss-Head
                kabirkhan

                I'll have a look after my next holiday. I think I did something simliar to this (one repository, multiple classloaders) for the attach scoped stuff.

                http://jira.jboss.com/jira/browse/JBAOP-356

                • 5. Re: AOP Testsuite nearly fixed in JBoss-Head

                  I'm rewriting this stuff for JBoss5 anyway.
                  This is issue is more for JBoss4.x (assuming it uses the same code?)

                  I just wanted to have a clean testsuite so I know what I broke. :-)