Make syncs consistent
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sun, 6 Jun 2010 21:50:11 +0000 (21:50 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sun, 6 Jun 2010 21:50:11 +0000 (21:50 +0000)
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

java/org/apache/catalina/util/LifecycleBase.java

index 6dba2a0..e33959d 100644 (file)
@@ -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));