Author: kfujino Date: Wed Oct 17 08:48:37 2018 New Revision: 1844074 URL: http://svn.apache.org/viewvc?rev=1844074&view=rev Log: Even if all members have already disappeared and PING can not be sent, ensure that members will be expired.
Modified: tomcat/trunk/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java?rev=1844074&r1=1844073&r2=1844074&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java (original) +++ tomcat/trunk/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java Wed Oct 17 08:48:37 2018 @@ -279,20 +279,21 @@ public class StaticMembershipProvider ex protected void ping() throws ChannelException { // send ping Member[] members = getAliveMembers(staticMembers.toArray(new Member[0])); - if (members.length == 0) return; - try { - MemberMessage msg = new MemberMessage(membershipId, MemberMessage.MSG_PING, service.getLocalMember(true)); - Response[] resp = rpcChannel.send(members, msg, RpcChannel.ALL_REPLY, sendOptions, rpcTimeout); - for (int i = 0; i < resp.length; i++) { - messageReceived(resp[i].getMessage(), resp[i].getSource()); + if (members.length > 0) { + try { + MemberMessage msg = new MemberMessage(membershipId, MemberMessage.MSG_PING, service.getLocalMember(true)); + Response[] resp = rpcChannel.send(members, msg, RpcChannel.ALL_REPLY, sendOptions, rpcTimeout); + for (int i = 0; i < resp.length; i++) { + messageReceived(resp[i].getMessage(), resp[i].getSource()); + } + } catch (ChannelException ce) { + // Handle known failed members + FaultyMember[] faultyMembers = ce.getFaultyMembers(); + for (FaultyMember faultyMember : faultyMembers) { + memberDisappeared(faultyMember.getMember()); + } + throw ce; } - } catch (ChannelException ce) { - // Handle known failed members - FaultyMember[] faultyMembers = ce.getFaultyMembers(); - for (FaultyMember faultyMember : faultyMembers) { - memberDisappeared(faultyMember.getMember()); - } - throw ce; } // expire checkExpired(); Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1844074&r1=1844073&r2=1844074&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Wed Oct 17 08:48:37 2018 @@ -220,6 +220,10 @@ Move the event notification <code>ThreadPoolExecutor</code> to <code>MembershipProviderBase</code>. (kfujino) </fix> + <fix> + Even if all members have already disappeared and PING can not be sent, + ensure that members will be expired. (kfujino) + </fix> </changelog> </subsection> <subsection name="Other"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org