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/06/11 14:24:10 UTC
svn commit: r546122 - in
/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering:
handlers/ReplicationHandler.java tribes/AckManager.java
tribes/ChannelSender.java
Author: azeez
Date: Mon Jun 11 05:24:08 2007
New Revision: 546122
URL: http://svn.apache.org/viewvc?view=rev&rev=546122
Log:
Few more optimizations
Modified:
webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/handlers/ReplicationHandler.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/handlers/ReplicationHandler.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/handlers/ReplicationHandler.java?view=diff&rev=546122&r1=546121&r2=546122
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/handlers/ReplicationHandler.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/handlers/ReplicationHandler.java Mon Jun 11 05:24:08 2007
@@ -51,11 +51,11 @@
public void flowComplete(MessageContext msgContext) {
// If there are no members, we need not do any replication
- ClusterManager clusterManager =
+ /*ClusterManager clusterManager =
msgContext.getConfigurationContext().getAxisConfiguration().getClusterManager();
if(clusterManager != null && clusterManager.getMemberCount() == 0){
return;
- }
+ }*/
int flow = msgContext.getFLOW();
String mep = msgContext.getAxisOperation().getMessageExchangePattern();
@@ -131,11 +131,11 @@
// Wait till all members have ACKed receipt & successful processing of
// the message with UUID 'msgUUID'
do {
+
+ // Wait sometime before checking whether message is ACKed
try {
Thread.sleep(50);
- } catch (InterruptedException e) {
- log.error(e);
- break;
+ } catch (InterruptedException ignored) {
}
if (System.currentTimeMillis() - start > 20000) {
throw new ClusteringFault("ACKs not received from all members within 20 sec. " +
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?view=diff&rev=546122&r1=546121&r2=546122
==============================================================================
--- 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 Mon Jun 11 05:24:08 2007
@@ -62,14 +62,13 @@
} else {
for (int i = 0; i < members.length; i++) {
Member member = members[i];
- if (!memberList.contains(member.getName())) {
+ if (member.isReady() && !memberList.contains(member.getName())) {
log.debug("[NO ACK] from member " + member.getName());
log.debug("ACKed member list=" + memberList);
+
// At this point, resend the original message back to the node which has not
// sent an ACK
- if (member.isReady()) {
- sender.sendToMember(ack.getCommand(), member);
- }
+ sender.sendToMember(ack.getCommand(), member);
//TODO: Enhancement, Check whether this is a new member. If then send the msg
isAcknowledged = false;
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?view=diff&rev=546122&r1=546121&r2=546122
==============================================================================
--- 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 Mon Jun 11 05:24:08 2007
@@ -19,9 +19,7 @@
import org.apache.axis2.clustering.ClusteringCommand;
import org.apache.axis2.clustering.ClusteringFault;
import org.apache.axis2.clustering.MessageSender;
-import org.apache.catalina.tribes.Channel;
-import org.apache.catalina.tribes.ChannelException;
-import org.apache.catalina.tribes.Member;
+import org.apache.catalina.tribes.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -36,10 +34,11 @@
}
// Keep retrying, since at the point of trying to send the msg, a member may leave the group
+ // causing a view change. All nodes in a view should get the msg
while (true) {
if (channel.getMembers().length > 0) {
try {
- channel.send(channel.getMembers(), msg, Channel.DEFAULT);
+ channel.send(channel.getMembers(), msg, 0); // TODO: We must try to minimize the delay here
log.debug("Sent " + msg + " to group");
break;
} catch (ChannelException e) {
@@ -60,7 +59,7 @@
try {
channel.send(new Member[]{channel.getLocalMember(true)},
msg,
- Channel.DEFAULT);
+ 0);
log.debug("Sent " + msg + " to self");
} catch (ChannelException e) {
throw new ClusteringFault(e);
@@ -91,8 +90,13 @@
public void sendToMember(ClusteringCommand cmd, Member member) throws ClusteringFault {
try {
- channel.send(new Member[]{member}, cmd, Channel.DEFAULT);
- log.debug("Sent " + cmd + " to " + member.getName());
+ System.err.println("######## MEM Ready=" + member.isReady());
+ System.err.println("######## MEM Failing=" + member.isFailing());
+ System.err.println("######## MEM Suspect=" + member.isSuspect());
+ if (member.isReady()) {
+ channel.send(new Member[]{member}, cmd, 0);
+ log.debug("Sent " + cmd + " to " + member.getName());
+ }
} catch (ChannelException e) {
String message = "Could not send message to " + member.getName() +
". Reason " + e.getMessage();
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org