From: kfujino Date: Tue, 14 Sep 2010 07:49:33 +0000 (+0000) Subject: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49924 X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=bad1d7be0a4e777da3225d340fadd5730bcebd42;p=tomcat7.0 Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49924 When non-primary node changes into a primary node, make sure isPrimarySession is changed to true. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@996778 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/ha/session/BackupManager.java b/java/org/apache/catalina/ha/session/BackupManager.java index 01b7b0eff..bc510f268 100644 --- a/java/org/apache/catalina/ha/session/BackupManager.java +++ b/java/org/apache/catalina/ha/session/BackupManager.java @@ -114,6 +114,7 @@ public class BackupManager extends ClusterManagerBase implements MapOwner { DeltaSession session = (DeltaSession)value; synchronized (session) { session.access(); + session.setPrimarySession(true); session.endAccess(); } } diff --git a/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java b/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java index c4f469789..9b4234609 100644 --- a/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java +++ b/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java @@ -892,12 +892,16 @@ public abstract class AbstractReplicatedMap extends ConcurrentHashMap implements if ( dest!=null && dest.length >0) { getChannel().send(dest, msg, getChannelSendOptions()); } + if ( entry.getValue() != null && entry.getValue() instanceof ReplicatedMapEntry ) { + ReplicatedMapEntry val = (ReplicatedMapEntry)entry.getValue(); + val.setOwner(getMapOwner()); + } } entry.setPrimary(channel.getLocalMember(false)); entry.setBackupNodes(backup); entry.setBackup(false); entry.setProxy(false); - + getMapOwner().objectMadePrimay(key, entry.getValue()); } catch (Exception x) { log.error("Unable to replicate out data for a LazyReplicatedMap.get operation", x); @@ -905,12 +909,6 @@ public abstract class AbstractReplicatedMap extends ConcurrentHashMap implements } } if (log.isTraceEnabled()) log.trace("Requesting id:"+key+" result:"+entry.getValue()); - if ( entry.getValue() != null && entry.getValue() instanceof ReplicatedMapEntry ) { - ReplicatedMapEntry val = (ReplicatedMapEntry)entry.getValue(); - //hack, somehow this is not being set above - val.setOwner(getMapOwner()); - - } return entry.getValue(); } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 34009313d..a8929d687 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -205,6 +205,10 @@ session before the current request has a chance to send the replication message. (markt) + + 49924: When non-primary node changes into a primary node, + make sure isPrimarySession is changed to true. (kfujino) +