From: fhanik Date: Thu, 9 Aug 2007 23:24:20 +0000 (+0000) Subject: must set the primary in all locations X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=b15e098b8c7c42269fa514e8c445a66054dad3f2;p=tomcat7.0 must set the primary in all locations git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@564420 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java b/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java index e82e97798..3ad4fa426 100644 --- a/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java +++ b/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java @@ -610,6 +610,7 @@ public abstract class AbstractReplicatedMap extends ConcurrentHashMap implements entry.setBackup(mapmsg.getMsgType() == MapMessage.MSG_BACKUP); entry.setProxy(false); entry.setBackupNodes(mapmsg.getBackupNodes()); + entry.setPrimary(mapmsg.getPrimary()); if (entry.getValue() instanceof ReplicatedMapEntry) { ReplicatedMapEntry diff = (ReplicatedMapEntry) entry.getValue(); if (mapmsg.isDiff()) { @@ -668,6 +669,7 @@ public abstract class AbstractReplicatedMap extends ConcurrentHashMap implements try { Member[] backup = publishEntryInfo(entry.getKey(), entry.getValue()); entry.setBackupNodes(backup); + entry.setPrimary(channel.getLocalMember(false)); } catch (ChannelException x) { log.error("Unable to select backup node.", x); } //catch @@ -705,6 +707,7 @@ public abstract class AbstractReplicatedMap extends ConcurrentHashMap implements synchronized (mapMembers) { removed = (mapMembers.remove(member) != null ); } + Iterator i = super.entrySet().iterator(); while (i.hasNext()) { Map.Entry e = (Map.Entry) i.next(); @@ -713,6 +716,7 @@ public abstract class AbstractReplicatedMap extends ConcurrentHashMap implements try { Member[] backup = publishEntryInfo(entry.getKey(), entry.getValue()); entry.setBackupNodes(backup); + entry.setPrimary(channel.getLocalMember(false)); } catch (ChannelException x) { log.error("Unable to relocate[" + entry.getKey() + "] to a new backup node", x); } @@ -733,6 +737,8 @@ public abstract class AbstractReplicatedMap extends ConcurrentHashMap implements entry.getBackupNodes()[0].equals(channel.getLocalMember(false)) ) { try { entry.setPrimary(channel.getLocalMember(false)); + entry.setBackup(false); + entry.setProxy(false); Member[] backup = publishEntryInfo(entry.getKey(), entry.getValue()); entry.setBackupNodes(backup); } catch (ChannelException x) {