From 0eab43a8fbd3a62b079030994917b2a9065291cd Mon Sep 17 00:00:00 2001 From: kfujino Date: Mon, 19 Apr 2010 10:07:16 +0000 Subject: [PATCH] Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49150 git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@935509 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/catalina/ha/session/BackupManager.java | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/java/org/apache/catalina/ha/session/BackupManager.java b/java/org/apache/catalina/ha/session/BackupManager.java index a69d79718..59a9dedc1 100644 --- a/java/org/apache/catalina/ha/session/BackupManager.java +++ b/java/org/apache/catalina/ha/session/BackupManager.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.util.Iterator; import org.apache.catalina.LifecycleException; +import org.apache.catalina.LifecycleState; import org.apache.catalina.Session; import org.apache.catalina.ha.CatalinaCluster; import org.apache.catalina.ha.ClusterManager; @@ -198,6 +199,11 @@ public class BackupManager extends StandardManager implements ClusterManager, Ma */ @Override protected synchronized void startInternal() throws LifecycleException { + + if (!initialized) init(); + + // Force initialization of the random number generator + generateSessionId(); try { cluster.registerManager(this); @@ -213,8 +219,7 @@ public class BackupManager extends StandardManager implements ClusterManager, Ma log.error("Unable to start BackupManager",x); throw new LifecycleException("Failed to start BackupManager",x); } - - super.startInternal(); + setState(LifecycleState.STARTING); } public String getMapName() { @@ -238,14 +243,22 @@ public class BackupManager extends StandardManager implements ClusterManager, Ma @Override protected synchronized void stopInternal() throws LifecycleException { - super.stopInternal(); - + if (log.isDebugEnabled()) + log.debug("Stopping"); + + setState(LifecycleState.STOPPING); + LazyReplicatedMap map = (LazyReplicatedMap)sessions; if ( map!=null ) { map.breakdown(); } cluster.removeManager(this); + this.random = null; + + if( initialized ) { + destroy(); + } } @Override -- 2.11.0