Author: markt
Date: Wed Jan 20 10:28:37 2016
New Revision: 1725694
URL: http://svn.apache.org/viewvc?rev=1725694&view=rev
Log:
Further fix to regression in r1725599
Trigger a call to stop() if a component puts itself into the FAILED
state during start().
Modified:
tomcat/trunk/java/org/apache/catalina/util/LifecycleBase.java
Modified: tomcat/trunk/java/org/apache/catalina/util/LifecycleBase.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/util/LifecycleBase.java?rev=1725694&r1=1725693&r2=1725694&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/util/LifecycleBase.java (original)
+++ tomcat/trunk/java/org/apache/catalina/util/LifecycleBase.java Wed Jan 20
10:28:37 2016
@@ -151,18 +151,24 @@ public abstract class LifecycleBase impl
try {
startInternal();
} catch (Throwable t) {
+ // This is an 'uncontrolled' failure so put the component into the
+ // FAILED state and throw an exception.
ExceptionUtils.handleThrowable(t);
setStateInternal(LifecycleState.FAILED, null, false);
throw new
LifecycleException(sm.getString("lifecycleBase.startFail", toString()), t);
}
- // Shouldn't be necessary but acts as a check that sub-classes are
- // doing what they are supposed to.
- if (!state.equals(LifecycleState.STARTING)) {
+ if (state.equals(LifecycleState.FAILED)) {
+ // This is a 'controlled' failure. The component put itself into
the
+ // FAILED state so call stop() to complete the clean-up.
+ stop();
+ } else if (!state.equals(LifecycleState.STARTING)) {
+ // Shouldn't be necessary but acts as a check that sub-classes are
+ // doing what they are supposed to.
invalidTransition(Lifecycle.AFTER_START_EVENT);
+ } else {
+ setStateInternal(LifecycleState.STARTED, null, false);
}
-
- setStateInternal(LifecycleState.STARTED, null, false);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]