You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fh...@apache.org on 2006/03/17 18:07:07 UTC

svn commit: r386672 - in /tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp: ./ bio/ nio/

Author: fhanik
Date: Fri Mar 17 09:06:52 2006
New Revision: 386672

URL: http://svn.apache.org/viewcvs?rev=386672&view=rev
Log:
Removed the resend flag and added in a configurable retry attempt flag that lets you control resends more


Added:
    tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSender.java
      - copied, changed from r386373, tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSocketSender.java
Removed:
    tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSocketSender.java
Modified:
    tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/PooledSender.java
    tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/BioSender.java
    tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/MultipointBioSender.java
    tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java
    tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java

Copied: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSender.java (from r386373, tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSocketSender.java)
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSender.java?p2=tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSender.java&p1=tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSocketSender.java&r1=386373&r2=386672&rev=386672&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSocketSender.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSender.java Fri Mar 17 09:06:52 2006
@@ -34,7 +34,7 @@
  * @author not attributable
  * @version 1.0
  */
-public abstract class AbstractSocketSender implements DataSender {
+public abstract class AbstractSender implements DataSender {
     
     private boolean connected = false;
     private boolean waitForAck = false;
@@ -50,17 +50,18 @@
     private InetAddress address;
     private int port;
     private int maxRetryAttempts;
-    public AbstractSocketSender() {
+    private int attempt;
+    public AbstractSender() {
         
     }
     
-    public AbstractSocketSender(Member destination) throws UnknownHostException {
+    public AbstractSender(Member destination) throws UnknownHostException {
         this.destination = destination;
         this.address = InetAddress.getByAddress(destination.getHost());
         this.port = destination.getPort();
     }
     
-    public AbstractSocketSender(Member destination, int rxBufSize, int txBufSize) throws UnknownHostException {
+    public AbstractSender(Member destination, int rxBufSize, int txBufSize) throws UnknownHostException {
         this(destination);
         this.rxBufSize = rxBufSize;
         this.txBufSize = txBufSize;
@@ -161,6 +162,9 @@
         return this.directBuffer;
     }
 
+    public int getAttempt() {
+        return attempt;
+    }
 
     public void setKeepAliveCount(int keepAliveCount) {
         this.keepAliveCount = keepAliveCount;
@@ -196,5 +200,9 @@
 
     public void setMaxRetryAttempts(int maxRetryAttempts) {
         this.maxRetryAttempts = maxRetryAttempts;
+    }
+
+    public void setAttempt(int attempt) {
+        this.attempt = attempt;
     }
 }

Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/PooledSender.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/PooledSender.java?rev=386672&r1=386671&r2=386672&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/PooledSender.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/PooledSender.java Fri Mar 17 09:06:52 2006
@@ -30,7 +30,7 @@
  * @author not attributable
  * @version 1.0
  */
-public abstract class PooledSender extends AbstractSocketSender implements MultiPointSender {
+public abstract class PooledSender extends AbstractSender implements MultiPointSender {
     
     private SenderQueue queue = null;
     private int poolSize = 25;

Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/BioSender.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/BioSender.java?rev=386672&r1=386671&r2=386672&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/BioSender.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/BioSender.java Fri Mar 17 09:06:52 2006
@@ -31,7 +31,7 @@
 import org.apache.catalina.tribes.tcp.DataSender;
 import org.apache.catalina.tribes.tcp.SenderState;
 import org.apache.catalina.util.StringManager;
-import org.apache.catalina.tribes.tcp.AbstractSocketSender;
+import org.apache.catalina.tribes.tcp.AbstractSender;
 
 /**
  * Send cluster messages with only one socket. Ack and keep Alive Handling is
@@ -42,7 +42,7 @@
  * @version $Revision: 377484 $ $Date: 2006-02-13 15:00:05 -0600 (Mon, 13 Feb 2006) $
  * @since 5.5.16
  */
-public class BioSender extends AbstractSocketSender implements DataSender {
+public class BioSender extends AbstractSender implements DataSender {
 
     private static org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(BioSender.class);
 
@@ -65,12 +65,6 @@
     private Socket socket = null;
     private OutputStream soOut = null;
     private InputStream soIn = null;
-
-
-    /**
-     * After failure make a resend
-     */
-    private boolean resend = false ;
     
     protected XByteBuffer ackbuf = new XByteBuffer(Constants.ACK_COMMAND.length,true);
 
@@ -98,22 +92,6 @@
         return (info);
     }
 
-    
-
-    /**
-     * @return Returns the resend.
-     */
-    public boolean isResend() {
-        return resend;
-    }
-    /**
-     * @param resend The resend to set.
-     */
-    public void setResend(boolean resend) {
-        this.resend = resend;
-    }
-
-
     // --------------------------------------------------------- Public Methods
 
     /**
@@ -149,22 +127,26 @@
     public  void sendMessage(byte[] data) throws IOException {
         boolean messageTransfered = false ;
         IOException exception = null;
+        setAttempt(0);
         try {
              // first try with existing connection
              pushMessage(data,false);
              messageTransfered = true ;
         } catch (IOException x) {
+            SenderState.getSenderState(getDestination()).setSuspect();
             exception = x;
-            //resend
             if (log.isTraceEnabled()) log.trace(sm.getString("IDataSender.send.again", getAddress().getHostAddress(),new Integer(getPort())),x);
-            try {
-                // second try with fresh connection
-                pushMessage(data,true);                    
-                messageTransfered = true;
-                exception = null;
-            } catch (IOException xx) {
-                exception = xx;
-                closeSocket();
+            while ( getAttempt()<getMaxRetryAttempts() ) {
+                try {
+                    setAttempt(getAttempt()+1);
+                    // second try with fresh connection
+                    pushMessage(data, true);
+                    messageTransfered = true;
+                    exception = null;
+                } catch (IOException xx) {
+                    exception = xx;
+                    closeSocket();
+                }
             }
         } finally {
             setRequestCount(getRequestCount()+1);
@@ -270,6 +252,7 @@
         soOut.write(data);
         soOut.flush();
         if (getWaitForAck()) waitForAck();
+        SenderState.getSenderState(getDestination()).setReady();
 
     }
     

Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/MultipointBioSender.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/MultipointBioSender.java?rev=386672&r1=386671&r2=386672&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/MultipointBioSender.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/MultipointBioSender.java Fri Mar 17 09:06:52 2006
@@ -10,7 +10,7 @@
 import org.apache.catalina.tribes.io.ClusterData;
 import org.apache.catalina.tribes.io.XByteBuffer;
 import org.apache.catalina.tribes.tcp.MultiPointSender;
-import org.apache.catalina.tribes.tcp.AbstractSocketSender;
+import org.apache.catalina.tribes.tcp.AbstractSender;
 
 /**
  * <p>Title: </p>
@@ -24,7 +24,7 @@
  * @author not attributable
  * @version 1.0
  */
-public class MultipointBioSender extends AbstractSocketSender implements MultiPointSender {
+public class MultipointBioSender extends AbstractSender implements MultiPointSender {
     public MultipointBioSender() {
     }
     

Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java?rev=386672&r1=386671&r2=386672&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java Fri Mar 17 09:06:52 2006
@@ -29,7 +29,7 @@
 import org.apache.catalina.tribes.Member;
 import org.apache.catalina.tribes.io.XByteBuffer;
 import org.apache.catalina.tribes.tcp.DataSender;
-import org.apache.catalina.tribes.tcp.AbstractSocketSender;
+import org.apache.catalina.tribes.tcp.AbstractSender;
 import java.net.UnknownHostException;
 
 /**
@@ -46,7 +46,7 @@
  * @author Filip Hanik
  * @version 1.0
  */
-public class NioSender extends AbstractSocketSender implements DataSender{
+public class NioSender extends AbstractSender implements DataSender{
 
     protected static org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(NioSender.class);
 
@@ -64,8 +64,6 @@
     protected XByteBuffer ackbuf = new XByteBuffer(128,true);
     protected int remaining = 0;
     protected boolean complete;
-    protected int attempt;
-
     public NioSender(Member destination) throws UnknownHostException {
         super(destination);
         
@@ -237,7 +235,7 @@
         ackbuf.clear();
         remaining = 0;
         complete = false;
-        attempt = 0;
+        setAttempt(0);
         setRequestCount(0);
         setConnectTime(-1);
     }
@@ -275,10 +273,6 @@
         return complete;
     }
 
-    public int getAttempt() {
-        return attempt;
-    }
-
     public Selector getSelector() {
         return selector;
     }
@@ -291,10 +285,4 @@
     public void setComplete(boolean complete) {
         this.complete = complete;
     }
-
-    public void setAttempt(int attempt) {
-        this.attempt = attempt;
-    }
-
-
 }

Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java?rev=386672&r1=386671&r2=386672&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java Fri Mar 17 09:06:52 2006
@@ -30,7 +30,7 @@
 import org.apache.catalina.tribes.io.XByteBuffer;
 import org.apache.catalina.tribes.tcp.MultiPointSender;
 import org.apache.catalina.tribes.tcp.SenderState;
-import org.apache.catalina.tribes.tcp.AbstractSocketSender;
+import org.apache.catalina.tribes.tcp.AbstractSender;
 import java.net.UnknownHostException;
 
 /**
@@ -45,7 +45,7 @@
  * @author not attributable
  * @version 1.0
  */
-public class ParallelNioSender extends AbstractSocketSender implements MultiPointSender {
+public class ParallelNioSender extends AbstractSender implements MultiPointSender {
     
     protected static org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(ParallelNioSender.class);
     



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org