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