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: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to