geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kevan Miller (JIRA)" <...@geronimo.apache.org>
Subject [jira] Commented: (GERONIMO-729) Startup tries to start failed service?
Date Wed, 13 Jul 2005 22:39:12 GMT
    [ 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


Mime
View raw message