You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by "Kevan Miller (JIRA)" <de...@geronimo.apache.org> on 2005/07/14 00:39:12 UTC

[jira] Commented: (GERONIMO-729) Startup tries to start failed service?

    [ http://issues.apache.org/jira/browse/GERONIMO-729?page=comments#action_12315792 ] 

Kevan Miller commented on GERONIMO-729:
---------------------------------------

I ran into the same problem with a port conflict. Did a little digging around. IMO the problem is as follows:

Here are lines 326-352 of modules\kernel\src\java\org\apache\geronimo\gbean\runtime\GBeanInstanceState.java from the unstable build geronimo-1.0-169186:

        try {
            // try to create the instance
            if (!gbeanInstance.createInstance()) {
                // instance is not ready to start... this is normally caused by references
                // not being available, but could be because someone alreayd started the gbean.
                // in another thread.  The reference will log a debug message about why
                // it could not start
                return;
            }
        } catch (Throwable t) {
            // oops there was a problem and the gbean failed
            setStateInstance(State.FAILED);
            lifecycleBroadcaster.fireFailedEvent();

            if (t instanceof Exception) {
                log.error("Error while starting; GBean is now in the FAILED state: objectName=\"" + objectName + "\"", t);
            } else if (t instanceof Error) {
                throw (Error) t;
            } else {
                throw new Error(t);
            } 
        }

        // started successfully... notify everyone else
        setStateInstance(State.RUNNING);
        lifecycleBroadcaster.fireRunningEvent();
    }

So, even if we catch a Throwable and set the state to FAILED, we'll still try to set state to RUNNING. Were it me, I'd stick a "return;" at the end of the catch (Throwable) clause...



> Startup tries to start failed service?
> --------------------------------------
>
>          Key: GERONIMO-729
>          URL: http://issues.apache.org/jira/browse/GERONIMO-729
>      Project: Geronimo
>         Type: Bug
>   Components: kernel
>     Versions: 1.0-M3
>     Reporter: Aaron Mulder

>
> If you start the server and Jetty can't bind to it's port, you get a variety of exceptions from Jetty, followed by:
> 12:04:06,655 WARN  [GBeanSingleReference] Exception occured while attempting to fully start: objectName=geronimo.server:J2EEApplication=null,J2EEModule=org/apache/geronimo/
> Server,J2EEServer=geronimo,j2eeType=GBean,name=JettyWebConnector
> java.lang.IllegalStateException: Cannot transition to running state from failed
>         at org.apache.geronimo.gbean.runtime.GBeanInstanceState.setStateInstance(GBeanInstanceState.java:496)
>         at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:351)
>         at org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:111)
>         at org.apache.geronimo.gbean.runtime.GBeanInstance.start(GBeanInstance.java:486)
>         at org.apache.geronimo.gbean.runtime.GBeanSingleReference.attemptFullStart(GBeanSingleReference.java:154)
>         at org.apache.geronimo.gbean.runtime.GBeanSingleReference.targetAdded(GBeanSingleReference.java:127)
>         at org.apache.geronimo.gbean.runtime.AbstractGBeanReference.addTarget(AbstractGBeanReference.java:242)
>         at org.apache.geronimo.gbean.runtime.GBeanSingleReference$1.running(GBeanSingleReference.java:163)
>         at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.fireRunningEvent(BasicLifecycleMonitor.java:155)
>         at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.access$300(BasicLifecycleMonitor.java:38)
>         at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor$RawLifecycleBroadcaster.fireRunningEvent(BasicLifecycleMonitor.java:231)
>         at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:352)
>         at org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:111)
>         at org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:133)
>         at org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:503)
>         at org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:207)
>         at org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:141)
>         at org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:503)
>         at org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:207)
>         at org.apache.geronimo.system.main.Daemon.doStartup(Daemon.java:247)
>         at org.apache.geronimo.system.main.Daemon.<init>(Daemon.java:81)
>         at org.apache.geronimo.system.main.Daemon.main(Daemon.java:320)
> It's not obvious to me what is happening -- it sounds kind of like the service failed to load or start but the kernel goes on and tries to start it again anyway.  Perhaps it should notice that the GBean is in the failed state and not try to start it in that case.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira