You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by az...@apache.org on 2007/11/14 14:51:43 UTC
svn commit: r594882 - in
/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering:
context/DefaultContextManager.java tribes/AckManager.java
tribes/ChannelSender.java
Author: azeez
Date: Wed Nov 14 05:51:37 2007
New Revision: 594882
URL: http://svn.apache.org/viewvc?rev=594882&view=rev
Log:
Do not wait for ACKs or try to resend the message if this message contains non-serializable parts
Modified:
webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/DefaultContextManager.java
webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/AckManager.java
webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelSender.java
Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/DefaultContextManager.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/DefaultContextManager.java?rev=594882&r1=594881&r2=594882&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/DefaultContextManager.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/DefaultContextManager.java Wed Nov 14 05:51:37 2007
@@ -52,7 +52,7 @@
public DefaultContextManager() {
}
-
+
public String updateContext(AbstractContext context) throws ClusteringFault {
ContextClusteringCommand cmd =
ContextClusteringCommandFactory.getUpdateCommand(context,
@@ -161,15 +161,21 @@
configContext.setNonReplicableProperty(ClusteringConstants.TIME_TO_SEND,
new Long(tts));
} catch (ClusteringFault clusteringFault) {
+ AckManager.removeMessage(cmd.getUniqueId());
throw new RuntimeException(clusteringFault);
}
}
};
processorThread.start();
} else {
- long tts = sender.sendToGroup(cmd);
- configContext.setNonReplicableProperty(ClusteringConstants.TIME_TO_SEND,
- new Long(tts));
+ try {
+ long tts = sender.sendToGroup(cmd);
+ configContext.setNonReplicableProperty(ClusteringConstants.TIME_TO_SEND,
+ new Long(tts));
+ } catch (ClusteringFault clusteringFault) {
+ AckManager.removeMessage(cmd.getUniqueId());
+ throw clusteringFault;
+ }
}
}
}
Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/AckManager.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/AckManager.java?rev=594882&r1=594881&r2=594882&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/AckManager.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/AckManager.java Wed Nov 14 05:51:37 2007
@@ -51,11 +51,18 @@
}
}
+ public static void removeMessage(String messageUniqueId){
+ messageAckTable.remove(messageUniqueId);
+ }
+
public static boolean isMessageAcknowledged(String messageUniqueId,
ChannelSender sender) throws ClusteringFault {
boolean isAcknowledged = false;
MessageACK ack = (MessageACK) messageAckTable.get(messageUniqueId);
+ if(ack == null){ // If the message is not found, treat it as ACKed
+ return true;
+ }
// Check that all members in the memberList are same as the total member list,
// which will indicate that all members have ACKed the message
Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelSender.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelSender.java?rev=594882&r1=594881&r2=594882&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelSender.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelSender.java Wed Nov 14 05:51:37 2007
@@ -28,9 +28,10 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import java.io.ObjectOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.io.NotSerializableException;
+import java.io.ObjectOutputStream;
public class ChannelSender implements MessageSender {
@@ -54,10 +55,15 @@
timeToSend = System.currentTimeMillis() - start;
log.debug("Sent " + msg + " to group");
break;
+ } catch (NotSerializableException e) {
+ String message = "Could not send command message " + msg +
+ " to group since it is not serializable.";
+ log.error(message, e);
+ throw new ClusteringFault(message, e);
} catch (Exception e) {
String message = "Error sending command message : " + msg +
". Reason " + e.getMessage();
- log.warn(message);
+ log.warn(message, e);
}
} else {
break;
@@ -98,10 +104,15 @@
timeToSend = System.currentTimeMillis() - start;
log.debug("Sent " + cmd + " to " + TribesUtil.getHost(member));
}
+ } catch (NotSerializableException e) {
+ String message = "Could not send command message to " + TribesUtil.getHost(member) +
+ " since it is not serializable.";
+ log.error(message, e);
+ throw new ClusteringFault(message, e);
} catch (Exception e) {
String message = "Could not send message to " + TribesUtil.getHost(member) +
". Reason " + e.getMessage();
- log.warn(message);
+ log.warn(message, e);
}
return timeToSend;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org