Return-Path: X-Original-To: apmail-tomcat-dev-archive@www.apache.org Delivered-To: apmail-tomcat-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5130810AFF for ; Wed, 5 Jun 2013 09:03:30 +0000 (UTC) Received: (qmail 46987 invoked by uid 500); 5 Jun 2013 09:03:28 -0000 Delivered-To: apmail-tomcat-dev-archive@tomcat.apache.org Received: (qmail 46864 invoked by uid 500); 5 Jun 2013 09:03:27 -0000 Mailing-List: contact dev-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Developers List" Delivered-To: mailing list dev@tomcat.apache.org Received: (qmail 45813 invoked by uid 99); 5 Jun 2013 09:03:25 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Jun 2013 09:03:25 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Jun 2013 09:03:22 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 3D23523888E7 for ; Wed, 5 Jun 2013 09:03:02 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1489752 - in /tomcat/trunk: java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java webapps/docs/config/cluster-interceptor.xml Date: Wed, 05 Jun 2013 09:03:02 -0000 To: dev@tomcat.apache.org From: kfujino@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130605090302.3D23523888E7@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: kfujino Date: Wed Jun 5 09:03:01 2013 New Revision: 1489752 URL: http://svn.apache.org/r1489752 Log: Add removeSuspectsTimeout attribute in order to dispel remove suspect. The removeSuspects members never be removed until disappeared really. Remove members that worked properly specified time by removeSuspectsTimeout from removeSuspects. Modified: tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java tomcat/trunk/webapps/docs/config/cluster-interceptor.xml Modified: tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java?rev=1489752&r1=1489751&r2=1489752&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java (original) +++ tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java Wed Jun 5 09:03:01 2013 @@ -83,6 +83,8 @@ public class TcpFailureDetector extends protected final HashMap addSuspects = new HashMap<>(); + protected int removeSuspectsTimeout = 300; // 5 minutes + @Override public void sendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload) throws ChannelException { try { @@ -271,7 +273,15 @@ public class TcpFailureDetector extends removeSuspects.remove(m); if(log.isInfoEnabled()) log.info("Suspect member, confirmed dead.["+m+"]"); - } //end if + } else { + if (removeSuspectsTimeout > 0) { + long timeNow = System.currentTimeMillis(); + int timeIdle = (int) ((timeNow - removeSuspects.get(m)) / 1000L); + if (timeIdle > removeSuspectsTimeout) { + removeSuspects.remove(m); // remove suspect member + } + } + } } //check add suspects members if they are alive now, @@ -362,6 +372,10 @@ public class TcpFailureDetector extends return connectTimeout; } + public int getRemoveSuspectsTimeout() { + return removeSuspectsTimeout; + } + public void setPerformConnectTest(boolean performConnectTest) { this.performConnectTest = performConnectTest; } @@ -382,4 +396,8 @@ public class TcpFailureDetector extends this.connectTimeout = connectTimeout; } + public void setRemoveSuspectsTimeout(int removeSuspectsTimeout) { + this.removeSuspectsTimeout = removeSuspectsTimeout; + } + } \ No newline at end of file Modified: tomcat/trunk/webapps/docs/config/cluster-interceptor.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/cluster-interceptor.xml?rev=1489752&r1=1489751&r2=1489752&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/config/cluster-interceptor.xml (original) +++ tomcat/trunk/webapps/docs/config/cluster-interceptor.xml Wed Jun 5 09:03:01 2013 @@ -157,6 +157,13 @@ Specifies the timeout, in milliseconds, to use when performing a read test to the suspicious node. Default is 5000. + + The maximum time(in seconds) for remove from removeSuspects. Member of + removeSuspects will be automatically removed after removeSuspectsTimeout. + If a negative value specified, the removeSuspects members never be + removed until disappeared really. If the attribute is not provided, + a default of 300 milliseconds (5 minutes) is used. + --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org For additional commands, e-mail: dev-help@tomcat.apache.org