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]