Author: markt Date: Mon Sep 6 12:07:42 2010 New Revision: 993007 URL: http://svn.apache.org/viewvc?rev=993007&view=rev Log: If a ping message fails, removed the failed members from the map rather than propagating the exception
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?rev=993007&r1=993006&r2=993007&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java (original) +++ tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java Mon Sep 6 12:07:42 2010 @@ -34,6 +34,7 @@ import java.util.concurrent.ConcurrentHa import org.apache.catalina.tribes.Channel; import org.apache.catalina.tribes.ChannelException; +import org.apache.catalina.tribes.ChannelException.FaultyMember; import org.apache.catalina.tribes.ChannelListener; import org.apache.catalina.tribes.Heartbeat; import org.apache.catalina.tribes.Member; @@ -253,14 +254,22 @@ public abstract class AbstractReplicated channel.getLocalMember(false), null); if ( channel.getMembers().length > 0 ) { - //send a ping, wait for all nodes to reply - Response[] resp = rpcChannel.send(channel.getMembers(), - msg, RpcChannel.ALL_REPLY, - (channelSendOptions), - (int) accessTimeout); - for (int i = 0; i < resp.length; i++) { - memberAlive(resp[i].getSource()); - } //for + try { + //send a ping, wait for all nodes to reply + Response[] resp = rpcChannel.send(channel.getMembers(), + msg, RpcChannel.ALL_REPLY, + (channelSendOptions), + (int) accessTimeout); + for (int i = 0; i < resp.length; i++) { + memberAlive(resp[i].getSource()); + } + } catch (ChannelException ce) { + // Handle known failed membersq + FaultyMember[] faultyMembers = ce.getFaultyMembers(); + for (FaultyMember faultyMember : faultyMembers) { + memberDisappeared(faultyMember.getMember()); + } + } } //update our map of members, expire some if we didn't receive a ping back synchronized (mapMembers) { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org