[
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