Author: kfujino Date: Tue Feb 17 02:17:16 2015 New Revision: 1660265 URL: http://svn.apache.org/r1660265 Log: Make sure that add to the backup node of the map entry when map member has been added to ReplicatedMap.
Modified: tomcat/trunk/java/org/apache/catalina/tribes/tipis/ReplicatedMap.java Modified: tomcat/trunk/java/org/apache/catalina/tribes/tipis/ReplicatedMap.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/tipis/ReplicatedMap.java?rev=1660265&r1=1660264&r2=1660265&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/tribes/tipis/ReplicatedMap.java (original) +++ tomcat/trunk/java/org/apache/catalina/tribes/tipis/ReplicatedMap.java Tue Feb 17 02:17:16 2015 @@ -203,4 +203,29 @@ public class ReplicatedMap<K,V> extends long complete = System.currentTimeMillis() - start; if (log.isInfoEnabled()) log.info("Relocation of map entries was complete in " + complete + " ms."); } + + public void mapMemberAdded(Member member) { + if ( member.equals(getChannel().getLocalMember(false)) ) return; + boolean memberAdded = false; + synchronized (mapMembers) { + if (!mapMembers.containsKey(member) ) { + mapMembers.put(member, new Long(System.currentTimeMillis())); + memberAdded = true; + } + } + if ( memberAdded ) { + synchronized (stateMutex) { + Member[] backup = getMapMembers(); + Iterator<Map.Entry<K,MapEntry<K,V>>> i = innerMap.entrySet().iterator(); + while (i.hasNext()) { + Map.Entry<K,MapEntry<K,V>> e = i.next(); + MapEntry<K,V> entry = innerMap.get(e.getKey()); + if ( entry == null ) continue; + if (entry.isPrimary() && !inSet(member,entry.getBackupNodes())) { + entry.setBackupNodes(backup); + } + } + } + } + } } \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org