Author: fhanik
Date: Tue May  2 10:36:53 2006
New Revision: 398973

URL: http://svn.apache.org/viewcvs?rev=398973&view=rev
Log:
Completed the failed ack feature. Its now optional whether it throws the 
exception or not, default is not

Modified:
    
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/AbstractSender.java
    
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/bio/BioSender.java
    
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/nio/NioSender.java
    tomcat/container/tc5.5.x/modules/groupcom/to-do.txt

Modified: 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/AbstractSender.java
URL: 
http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/AbstractSender.java?rev=398973&r1=398972&r2=398973&view=diff
==============================================================================
--- 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/AbstractSender.java
 (original)
+++ 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/AbstractSender.java
 Tue May  2 10:36:53 2006
@@ -57,6 +57,7 @@
     private boolean soLingerOn = true;
     private int soLingerTime = 3;
     private int soTrafficClass = 0x04 | 0x08 | 0x010;
+    private boolean throwOnFailedAck = false;
     public AbstractSender() {
         
     }
@@ -196,6 +197,10 @@
         return soTrafficClass;
     }
 
+    public boolean getThrowOnFailedAck() {
+        return throwOnFailedAck;
+    }
+
     public void setKeepAliveCount(int keepAliveCount) {
         this.keepAliveCount = keepAliveCount;
     }
@@ -258,5 +263,9 @@
 
     public void setSoTrafficClass(int soTrafficClass) {
         this.soTrafficClass = soTrafficClass;
+    }
+
+    public void setThrowOnFailedAck(boolean throwOnFailedAck) {
+        this.throwOnFailedAck = throwOnFailedAck;
     }
 }

Modified: 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/bio/BioSender.java
URL: 
http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/bio/BioSender.java?rev=398973&r1=398972&r2=398973&view=diff
==============================================================================
--- 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/bio/BioSender.java
 (original)
+++ 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/bio/BioSender.java
 Tue May  2 10:36:53 2006
@@ -19,20 +19,19 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.Socket;
 import java.net.UnknownHostException;
 import java.util.Arrays;
 
 import org.apache.catalina.tribes.Member;
+import org.apache.catalina.tribes.RemoteProcessException;
 import org.apache.catalina.tribes.io.XByteBuffer;
+import org.apache.catalina.tribes.transport.AbstractSender;
 import org.apache.catalina.tribes.transport.Constants;
 import org.apache.catalina.tribes.transport.DataSender;
 import org.apache.catalina.tribes.transport.SenderState;
 import org.apache.catalina.tribes.util.StringManager;
-import org.apache.catalina.tribes.transport.AbstractSender;
-import org.apache.catalina.tribes.RemoteProcessException;
 
 /**
  * Send cluster messages with only one socket. Ack and keep Alive Handling is
@@ -293,7 +292,7 @@
             if (!ackReceived) {
                 if (i == -1) throw new 
IOException(sm.getString("IDataSender.ack.eof",getAddress(), new 
Integer(socket.getLocalPort())));
                 else throw new 
IOException(sm.getString("IDataSender.ack.wrong",getAddress(), new 
Integer(socket.getLocalPort())));
-            } else if ( failAckReceived ) {
+            } else if ( failAckReceived && getThrowOnFailedAck()) {
                 throw new RemoteProcessException("Received a failed 
ack:org.apache.catalina.tribes.transport.Constants.FAIL_ACK_DATA");
             }
         } catch (IOException x) {

Modified: 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/nio/NioSender.java
URL: 
http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/nio/NioSender.java?rev=398973&r1=398972&r2=398973&view=diff
==============================================================================
--- 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/nio/NioSender.java
 (original)
+++ 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/nio/NioSender.java
 Tue May  2 10:36:53 2006
@@ -160,7 +160,7 @@
             byte[] ackcmd = ackbuf.extractDataPackage(true);
             boolean ack = 
Arrays.equals(ackcmd,org.apache.catalina.tribes.transport.Constants.ACK_DATA);
             boolean fack = 
Arrays.equals(ackcmd,org.apache.catalina.tribes.transport.Constants.FAIL_ACK_DATA);
-            if ( fack ) throw new RemoteProcessException("Received a failed 
ack:org.apache.catalina.tribes.transport.Constants.FAIL_ACK_DATA");
+            if ( fack && getThrowOnFailedAck() ) throw new 
RemoteProcessException("Received a failed 
ack:org.apache.catalina.tribes.transport.Constants.FAIL_ACK_DATA");
             return ack || fack;
         } else {
             return false;

Modified: tomcat/container/tc5.5.x/modules/groupcom/to-do.txt
URL: 
http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/to-do.txt?rev=398973&r1=398972&r2=398973&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/to-do.txt (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/to-do.txt Tue May  2 10:36:53 2006
@@ -42,10 +42,6 @@
     Add in the ability to start up tribes, but don't start the membership 
broadcast
     component, only the listener
 
-42. When the option SEND_OPTIONS_SYNCHRONIZED_ACK, and an error happens during
-    processing on the remote node, a FAIL_ACK command should be sent 
-    so that the sending node doesn't have to time out
-
 41. Build a tipi that is a soft membership
 
 38. Make the AbstractReplicatedMap accept non serializable elements, but just 
don't replicate them
@@ -252,4 +248,11 @@
 Notes: Completed. The membership now carries a variable length host address to 
support IPv6
 
 40. channel.stop() - should broadcast a stop message, to avoid timeout
-Notes: Completed. 
\ No newline at end of file
+Notes: Completed. 
+
+42. When the option SEND_OPTIONS_SYNCHRONIZED_ACK, and an error happens during
+    processing on the remote node, a FAIL_ACK command should be sent 
+    so that the sending node doesn't have to time out
+Notes: Completed. The error will be wrapped in a ChannelException and marked 
as a 
+       RemoteProcessException for that node.
+       To receive this exception, one must turn on 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to