You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kf...@apache.org on 2015/02/17 03:17:17 UTC

svn commit: r1660265 - /tomcat/trunk/java/org/apache/catalina/tribes/tipis/ReplicatedMap.java

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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org