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 2018/10/17 08:48:37 UTC

svn commit: r1844074 - in /tomcat/trunk: java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java webapps/docs/changelog.xml

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