You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by "Kevan Miller (JIRA)" <ji...@apache.org> on 2008/04/21 06:55:21 UTC

[jira] Closed: (OPENEJB-793) Infinite loop in CheckCallbacks

     [ https://issues.apache.org/jira/browse/OPENEJB-793?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Kevan Miller closed OPENEJB-793.
--------------------------------

    Resolution: Fixed

Fixed infinite loop.

Note that this condition only occurs if there is an error in an ejb-jar.xml (i.e. a specified interceptor callback handler can not be found by a getMethod() call. getMethods() is used to provide additional diagnostic information to the user...

> Infinite loop in CheckCallbacks
> -------------------------------
>
>                 Key: OPENEJB-793
>                 URL: https://issues.apache.org/jira/browse/OPENEJB-793
>             Project: OpenEJB
>          Issue Type: Bug
>          Components: deployment
>    Affects Versions: 3.0, 3.0.1
>            Reporter: Kevan Miller
>            Assignee: Kevan Miller
>             Fix For: 3.0.1
>
>
> A geronimo user reported a hang during an application deployment. 
> Here's a suspicious looking thread...
> "RMI TCP Connection(5)-0:0:0:0:a01:0:efe1:5803%266" daemon prio=5 tid=0x11c44420 nid=0x935400 runnable [0xb1a23000..0xb1a25d90]
> at java.lang.Class.getClassLoader0(Native Method)
> at java.lang.ClassLoader.getCallerClassLoader(ClassLoader.java:1411)
> at java.lang.Class.getDeclaredMethods(Class.java:1762)
> at org.apache.openejb.config.rules.CheckCallbacks.getMethods(CheckCallbacks.java:197)
> at org.apache.openejb.config.rules.CheckCallbacks.checkCallback(CheckCallbacks.java:169)
> at org.apache.openejb.config.rules.CheckCallbacks.validate(CheckCallbacks.java:86)
> at org.apache.openejb.config.rules.ValidationBase.validate(ValidationBase.java:43)
> at org.apache.openejb.config.AppValidator.validate(AppValidator.java:82)
> at org.apache.openejb.config.ValidateModules.deploy(ValidateModules.java:31)
> at org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:141)
> at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:425)
> at org.apache.geronimo.openejb.deployment.EjbModuleBuilder.configureApplication(EjbModuleBuilder.java:638)
> at org.apache.geronimo.openejb.deployment.EjbModuleBuilder.getEjbJarInfo(EjbModuleBuilder.java:575)
> at org.apache.geronimo.openejb.deployment.EjbModuleBuilder.initContext(EjbModuleBuilder.java:497)
> at org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(EARConfigBuilder.java:595)
> at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:254)
> at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:133)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
> at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
> at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:867)
> at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
> at org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:342)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
> at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
> at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:867)
> at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
> at org.apache.geronimo.system.jmx.MBeanGBeanBridge.invoke(MBeanGBeanBridge.java:172)
> at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:213)
> at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220)
> at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:815)
> at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784)
> at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1410)
> at javax.management.remote.rmi.RMIConnectionImpl.access$100(RMIConnectionImpl.java:81)
> at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1247)
> at java.security.AccessController.doPrivileged(Native Method)
> at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1350)
> at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:784)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
> at sun.rmi.transport.Transport$1.run(Transport.java:153)
> at java.security.AccessController.doPrivileged(Native Method)
> at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
> at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466)
> at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707)
> at java.lang.Thread.run(Thread.java:613)
> CheckCallbacks.getMethods() looks like this :-(
>     private List<Method> getMethods(Class clazz, String methodName) {
>         List<Method> methods = new ArrayList<Method>();
>         while (clazz != null){
>             for (Method method : clazz.getDeclaredMethods()) {
>                 if (method.getName().equals(methodName)){
>                     methods.add(method);
>                 }
>             }
>         }
>         return methods;
>     }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Re: [jira] Closed: (OPENEJB-793) Infinite loop in CheckCallbacks

Posted by Jacek Laskowski <ja...@laskowski.net.pl>.
On Mon, Apr 21, 2008 at 6:55 AM, Kevan Miller (JIRA) <ji...@apache.org> wrote:

>  Fixed infinite loop.
>
>  Note that this condition only occurs if there is an error in an ejb-jar.xml (i.e. a specified interceptor callback handler can not be found by a getMethod() call. getMethods() is used to provide additional diagnostic information to the user...

This once again makes the junit tests so important stuff we have to
improved in 3.1.

<hint>
  Excellent approach to delve into the openejb code and contribute to
the project.
</hint>

Jacek

-- 
Jacek Laskowski
http://www.JacekLaskowski.pl