From 36e3fa9b1a1cda45a8001f5d26cdbc3eb95ace7a Mon Sep 17 00:00:00 2001 From: fhanik Date: Wed, 25 Apr 2007 18:29:50 +0000 Subject: [PATCH] Implement keep alive timeout logic git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@532434 13f79535-47bb-0310-9956-ffa450edef68 --- .../tribes/group/interceptors/TcpFailureDetector.java | 2 +- .../org/apache/catalina/tribes/transport/AbstractSender.java | 2 +- java/org/apache/catalina/tribes/transport/PooledSender.java | 12 +++++++++++- .../catalina/tribes/transport/nio/ParallelNioSender.java | 1 + 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java b/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java index 37a66f952..3fb1f68a7 100644 --- a/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java +++ b/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java @@ -198,7 +198,7 @@ public class TcpFailureDetector extends ChannelInterceptorBase { }catch ( Exception x ) { log.warn("Unable to perform heartbeat on the TcpFailureDetector.",x); } finally { - super.heartbeat(); + } } diff --git a/java/org/apache/catalina/tribes/transport/AbstractSender.java b/java/org/apache/catalina/tribes/transport/AbstractSender.java index 2695d63af..d5fe7f10a 100644 --- a/java/org/apache/catalina/tribes/transport/AbstractSender.java +++ b/java/org/apache/catalina/tribes/transport/AbstractSender.java @@ -113,7 +113,7 @@ public abstract class AbstractSender implements DataSender { public boolean keepalive() { boolean disconnect = false; if ( keepAliveCount >= 0 && requestCount>keepAliveCount ) disconnect = true; - else if ( keepAliveTime >= 0 && keepAliveTime> (System.currentTimeMillis()-connectTime) ) disconnect = true; + else if ( keepAliveTime >= 0 && (System.currentTimeMillis()-connectTime)>keepAliveTime ) disconnect = true; if ( disconnect ) disconnect(); return disconnect; } diff --git a/java/org/apache/catalina/tribes/transport/PooledSender.java b/java/org/apache/catalina/tribes/transport/PooledSender.java index efa767fdc..a344c14b3 100644 --- a/java/org/apache/catalina/tribes/transport/PooledSender.java +++ b/java/org/apache/catalina/tribes/transport/PooledSender.java @@ -80,7 +80,7 @@ public abstract class PooledSender extends AbstractSender implements MultiPointS public boolean keepalive() { //do nothing, the pool checks on every return - return false; + return (queue==null)?false:queue.checkIdleKeepAlive(); } @@ -130,6 +130,16 @@ public abstract class PooledSender extends AbstractSender implements MultiPointS public int getInPoolSize() { return notinuse.size(); } + + public synchronized boolean checkIdleKeepAlive() { + DataSender[] list = new DataSender[notinuse.size()]; + notinuse.toArray(list); + boolean result = false; + for (int i=0; i