From: markt Date: Sun, 6 Jun 2010 21:50:11 +0000 (+0000) Subject: Make syncs consistent X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=d55ae204e7b13a4e18b22c6f4042862c69b9a12f;p=tomcat7.0 Make syncs consistent Partial fix for https://issues.apache.org/bugzilla/show_bug.cgi?id=49372 Avoid invalid Lifecycle transitions on failed start due to already bound shutdown port git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@952000 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/util/LifecycleBase.java b/java/org/apache/catalina/util/LifecycleBase.java index 6dba2a051..e33959d37 100644 --- a/java/org/apache/catalina/util/LifecycleBase.java +++ b/java/org/apache/catalina/util/LifecycleBase.java @@ -134,7 +134,12 @@ public abstract class LifecycleBase implements Lifecycle { setState(LifecycleState.STARTING_PREP); - startInternal(); + try { + startInternal(); + } catch (LifecycleException e) { + setState(LifecycleState.FAILED); + throw e; + } if (state.equals(LifecycleState.FAILED) || state.equals(LifecycleState.MUST_STOP)) { @@ -296,7 +301,7 @@ public abstract class LifecycleBase implements Lifecycle { * @param state The new state for this component * @param data The data to pass to the associated {@link Lifecycle} event */ - protected void setState(LifecycleState state, Object data) { + protected synchronized void setState(LifecycleState state, Object data) { if (log.isDebugEnabled()) { log.debug(sm.getString("lifecycleBase.setState", this, state));