Author: fhanik Date: Thu Aug 9 12:52:08 2007 New Revision: 564358 URL: http://svn.apache.org/viewvc?view=rev&rev=564358 Log: make the backup node become the primary so that we can still expire sessions http://issues.apache.org/bugzilla/show_bug.cgi?id=43053
Modified: tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java Modified: tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java?view=diff&rev=564358&r1=564357&r2=564358 ============================================================================== --- tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java (original) +++ tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java Thu Aug 9 12:52:08 2007 @@ -719,13 +719,26 @@ } else if (member.equals(entry.getPrimary())) { entry.setPrimary(null); } //end if - if ( entry.getPrimary() == null && + + if ( entry.isProxy() && + entry.getPrimary() == null && entry.getBackupNodes()!=null && entry.getBackupNodes().length == 1 && entry.getBackupNodes()[0].equals(member) ) { //remove proxies that have no backup nor primaries i.remove(); + } else if ( entry.isBackup() && + entry.getBackupNodes()!=null && + entry.getBackupNodes().length == 1 && + entry.getBackupNodes()[0].equals(channel.getLocalMember(false)) ) { + try { + Member[] backup = publishEntryInfo(entry.getKey(), entry.getValue()); + entry.setBackupNodes(backup); + } catch (ChannelException x) { + log.error("Unable to relocate[" + entry.getKey() + "] to a new backup node", x); + } } + } //while } @@ -979,7 +992,6 @@ Object key = e.getKey(); MapEntry entry = (MapEntry)super.get(key); if ( entry != null && entry.isPrimary() ) set.add(entry.getValue()); - else if ( entry != null && entry.getPrimary() == null && entry.isBackup() ) set.add(entry.getValue()); } return Collections.unmodifiableSet(set); } @@ -994,7 +1006,6 @@ Object key = e.getKey(); MapEntry entry = (MapEntry)super.get(key); if ( entry!=null && entry.isPrimary() ) set.add(key); - else if ( entry != null && entry.getPrimary() == null && entry.isBackup() ) set.add(key); } return Collections.unmodifiableSet(set); @@ -1011,7 +1022,6 @@ if ( e != null ) { MapEntry entry = (MapEntry) super.get(e.getKey()); if (entry!=null && entry.isPrimary() && entry.getValue() != null) counter++; - else if ( entry != null && entry.getPrimary() == null && entry.isBackup() ) counter++; } } return counter; --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]