Strike!

CGJ


-----Ursprüngliche Nachricht-----
Von: Alarik Myrin [mailto:[EMAIL PROTECTED]] 
Gesendet: Donnerstag, 25. April 2002 06:24
An: [EMAIL PROTECTED]
Betreff: RE: [JBoss-dev] Workaround for JUNG's RFE and load deadlock


WAIT!  EVERYTHING WORKS FINE!

Don't i feel like a dumb ass.  Although I got the new code and built it,
when I went to copy the jars to the directory that I usually run out of
(don't ask...bad habits are hard to break), somehow the jboss-jmx-core.jar
and jboss-jmx-services.jar were still in the directory from when i built the
3.0.0RC1 release (they don't seem to get built with the MAIN branch of the
code).  So the wrong version of the classes were being loaded in (ironic,
don't you think?)  The line numbers in the stack traces should have given it
away hours ago.  well, at least it's given me a chance to review the fix,
and i have to say:  very nice.  if i had to spend all night chasing down a
bug that wasn't there, at least i learned something.

Sorry if I scared anybody, or wasted anybody's time...

alarik

> -----Original Message-----
> From: Alarik Myrin [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, April 24, 2002 8:22 PM
> To: [EMAIL PROTECTED]
> Subject: RE: [JBoss-dev] Workaround for JUNG's RFE and load deadlock
>
>
> Alas, I am getting a little further, but still getting a deadlock.  
> Below please find the relavent stack traces.  Here is my take on what 
> they might mean, in case it is interesting to you:
>
> There are two relavent threads.  One (the first stack trace) is trying 
> to load a class needed by a stateless session bean in an effor to 
> deploy the bean.  The class does not exist in the bean's jar file, 
> instead it exists in a another archive called picasso.zip.  The other 
> (the second stack trace), was spawned by a class found in picasso.zip.  
> It is trying to load a class from (I suspect) a third party jar file 
> called osji.jar.  Because there is a seperate class loader for each 
> archive, the deadlock becomes possible.  Does this sound right?  (I am 
> not really an expert at class loading, but learning as I go :).
>
> What makes this problem quite tricky (it seems to me) is that in both 
> threads the UnifiedClassLoader instance is _already locked_ by the 
> time _any_ of its methods are even executed.
>
> What about this:  instead of
>
>    /**
>    * We intercept the load class to know exactly the dependencies
>    * of the underlying jar.
>    *
>    * <p>Forwards request to {@link UnifiedLoaderRepository}.
>    */
>    public Class loadClass(String name, boolean resolve)
>    throws ClassNotFoundException
>    {
>       synchronized(this)
>       {
>          return repository.loadClass(name, resolve, this);
>       }
>    }
>
> What if we did this:
>
>    /**
>    * We intercept the load class to know exactly the dependencies
>    * of the underlying jar.
>    *
>    * <p>Forwards request to {@link UnifiedLoaderRepository}.
>    */
>    public Class loadClass(String name, boolean resolve)
>    throws ClassNotFoundException
>    {
>       synchronized(this.getClass())
>       {
>          return repository.loadClass(name, resolve, this);
>       }
>    }
>
> Another observation:  startup appears to be taking noticably longer 
> than it did with JBoss 2.4.x, even in parts of the startup process 
> where I suspect it is mostly just executing my code.  The CPU just 
> spikes like crazy.  Whenever I do a thread dump to check what it is up 
> to, it always appears to be trying to load a class.  Startup time 
> isn't the most important thing in the world, but it does impact the 
> speed of development (although I suspect that if I really understood 
> the power of the deploy/undeploy functionality of JBoss 3, I wouldn't 
> need to restart the server nearly so often...).
>
> Anyway, I hope all of this helps.  I'll be available all week to run 
> any tests you'd like, but then I start traveling for almost a month...
>
> Alarik
>
> "main" prio=5 tid=0xc7d640 nid=0x157 waiting for monitor entry 
> [0x93fd000..0x93ffdc0]
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:286)
>         - waiting to lock <3329c48> (a
> org.jboss.mx.loading.UnifiedClassLoader)
>         at 
> org.jboss.mx.loading.UnifiedClassLoader.loadClassLocally(UnifiedCl
> assLoader.java:180)
>         at 
> org.jboss.mx.loading.UnifiedLoaderRepository.loadClass(UnifiedLoad
> erRepository.java:178)
>         at 
> org.jboss.mx.loading.UnifiedClassLoader.loadClass(UnifiedClassLoad
> er.java:217)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
>         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
>         - locked <330edc0> (a org.jboss.mx.loading.UnifiedClassLoader)
>         at java.lang.Class.forName0(Native Method)
>         at java.lang.Class.forName(Class.java:195)
>         at com.odi.ClassInfo.lookupClassInfoByName(ClassInfo.java:608)
>         at com.odi.ClassInfo.lookupClassInfoByName(ClassInfo.java:589)
>         at com.odi.ClassInfo.findAndRegister(ClassInfo.java:502)
>         at com.odi.ClassInfo.get(ClassInfo.java:483)
>         at 
> com.sknt.picasso.lib.gui.TableConfiguration.getClassInfoInstance(T
> ableConfiguration.java)
>         at 
> com.sknt.picasso.lib.gui.TableConfiguration.<clinit>(TableConfigur
> ation.java)
>         at java.lang.Class.forName0(Native Method)
>         at java.lang.Class.forName(Class.java:120)
>         at $Proxy99.<clinit>(Unknown Source)
>         at java.lang.reflect.Constructor.newInstance(Native Method)
>         at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:562)
>         at
> org.jboss.proxy.ejb.ProxyFactory.bindProxy(ProxyFactory.java:323)
>         at org.jboss.proxy.ejb.ProxyFactory.start(ProxyFactory.java:185)
>         at 
> org.jboss.ejb.StatelessSessionContainer.start(StatelessSessionCont
> ainer.java:206)
>         at org.jboss.ejb.Container.invoke(Container.java:794)
>         at
> org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:492)
>         at 
> org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceCont
> roller.java:867)
>         at $Proxy0.start(Unknown Source)
>         at
> org.jboss.system.ServiceController.start(ServiceController.java:341)
>         - locked <327ce58> (a org.jboss.system.ServiceController)
>         at java.lang.reflect.Method.invoke(Native Method)
>         at 
> org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedM
> BeanDispatcher.java:284)
>         at
> org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:492)
>         at org.jboss.util.jmx.MBeanProxy.invoke(MBeanProxy.java:174)
>         at $Proxy96.start(Unknown Source)
>         at org.jboss.ejb.EjbModule.startService(EjbModule.java:440)
>         at
> org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:162)
>         at java.lang.reflect.Method.invoke(Native Method)
>         at 
> org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedM
> BeanDispatcher.java:284)
>         at
> org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:492)
>         at 
> org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceCont
> roller.java:867)
>         at $Proxy0.start(Unknown Source)
>         at
> org.jboss.system.ServiceController.start(ServiceController.java:341)
>         - locked <327ce58> (a org.jboss.system.ServiceController)
>         at java.lang.reflect.Method.invoke(Native Method)
>         at 
> org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedM
> BeanDispatcher.java:284)
>         at
> org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:492)
>         at org.jboss.util.jmx.MBeanProxy.invoke(MBeanProxy.java:174)
>         at $Proxy5.start(Unknown Source)
>         at org.jboss.ejb.EJBDeployer.start(EJBDeployer.java:394)
>         - locked <36b3ef8> (a org.jboss.ejb.EJBDeployer)
>         at org.jboss.deployment.MainDeployer.start(MainDeployer.java:690)
>         at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:525)
>         at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:488)
>         at java.lang.reflect.Method.invoke(Native Method)
>         at 
> org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedM
> BeanDispatcher.java:284)
>         at
> org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:492)
>         at org.jboss.util.jmx.MBeanProxy.invoke(MBeanProxy.java:174)
>         at $Proxy4.deploy(Unknown Source)
>         at 
> org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploy
> mentScanner.java:405)
>         at 
> org.jboss.deployment.scanner.URLDeploymentScanner.scanDirectory(UR
> LDeploymentScanner.java:586)
>         at 
> org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeployme
> ntScanner.java:465)
>         - locked <36b9090> (a java.util.Collections$SynchronizedList)
>         - locked <36b8aa8> (a
> org.jboss.deployment.scanner.URLDeploymentScanner)
>         at 
> org.jboss.deployment.scanner.AbstractDeploymentScanner.startServic
> e(AbstractDeploymentScanner.java:237)
>         at
> org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:162)
>         at java.lang.reflect.Method.invoke(Native Method)
>         at 
> org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedM
> BeanDispatcher.java:284)
>         at
> org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:492)
>         at 
> org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceCont
> roller.java:867)
>         at $Proxy0.start(Unknown Source)
>         at
> org.jboss.system.ServiceController.start(ServiceController.java:341)
>         - locked <327ce58> (a org.jboss.system.ServiceController)
>         at java.lang.reflect.Method.invoke(Native Method)
>         at 
> org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedM
> BeanDispatcher.java:284)
>         at
> org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:492)
>         at org.jboss.util.jmx.MBeanProxy.invoke(MBeanProxy.java:174)
>         at $Proxy3.start(Unknown Source)
>         at org.jboss.deployment.SARDeployer.start(SARDeployer.java:281)
>         at org.jboss.deployment.MainDeployer.start(MainDeployer.java:690)
>         at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:525)
>         at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:488)
>         at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:470)
>         at java.lang.reflect.Method.invoke(Native Method)
>         at 
> org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedM
> BeanDispatcher.java:284)
>         at
> org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:492)
>         at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:320)
>         at org.jboss.system.server.ServerImpl.start(ServerImpl.java:218)
>         at org.jboss.Main.boot(Main.java:142)
>         at org.jboss.Main$1.run(Main.java:375)
>         at java.lang.Thread.run(Thread.java:484)
>
> "Thread-29" prio=5 tid=0xb59a6b0 nid=0xe6 waiting for monitor entry 
> [0xc6af000..0xc6afdc0]
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:286)
>         - waiting to lock <330edc0> (a
> org.jboss.mx.loading.UnifiedClassLoader)
>         at 
> org.jboss.mx.loading.UnifiedClassLoader.loadClassLocally(UnifiedCl
> assLoader.java:180)
>         at 
> org.jboss.mx.loading.UnifiedLoaderRepository.loadClass(UnifiedLoad
> erRepository.java:178)
>         at 
> org.jboss.mx.loading.UnifiedClassLoader.loadClass(UnifiedClassLoad
> er.java:217)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
>         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
>         - locked <3329c48> (a org.jboss.mx.loading.UnifiedClassLoader)
>         at java.lang.Class.forName0(Native Method)
>         at java.lang.Class.forName(Class.java:120)
>         at com.odi.imp.Server.create(Server.java:106)
>         at com.odi.imp.ObjectManager.<init>(ObjectManager.java:4093)
>         at com.odi.Session.create(Session.java:502)
>         - locked <3887ac0> (a java.util.Hashtable)
>         at
> com.sknt.picasso.lib.PicassoServerEnv.startJMS(PicassoServerEnv.java:393)
>         at 
> com.sknt.picasso.lib.PicassoServerEnv$TestJMS.run(PicassoServerEnv
> .java:771)
>         - locked <44893c8> (a
> com.sknt.picasso.lib.PicassoServerEnv$TestJMS)
>         at java.lang.Thread.run(Thread.java:484)
>
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED]]On Behalf Of 
> > marc fleury
> > Sent: Wednesday, April 24, 2002 10:36 AM
> > To: [EMAIL PROTECTED]
> > Subject: Re: [JBoss-dev] Workaround for JUNG's RFE and load deadlock
> >
> >
> > Done,
> >
> > Dave please test
> >
> > Jung, thanks man
> >
> > marcf
> >
> >
> > * * *
> >
> > View thread online: 
> > http://jboss.org/forums/thread.jsp?forum=66&thread=13851
> >
> > _______________________________________________
> > Jboss-development mailing list 
> > [EMAIL PROTECTED]
> > https://lists.sourceforge.net/lists/listinfo/jboss-development
> >


_______________________________________________
Jboss-development mailing list [EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to