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/01 11:36:06 UTC

svn commit: r543446 - in /webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering: context/ContextClusteringCommandFactory.java tribes/AckManager.java tribes/TribesUtil.java

Author: azeez
Date: Fri Jun  1 02:36:04 2007
New Revision: 543446

URL: http://svn.apache.org/viewvc?view=rev&rev=543446
Log:
Handle scenario where there is only one single node in the cluster


Modified:
    webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/ContextClusteringCommandFactory.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/TribesUtil.java

Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/ContextClusteringCommandFactory.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/ContextClusteringCommandFactory.java?view=diff&rev=543446&r1=543445&r2=543446
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/ContextClusteringCommandFactory.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/ContextClusteringCommandFactory.java Fri Jun  1 02:36:04 2007
@@ -123,31 +123,35 @@
                                        boolean includeAllProperties) {
         if (!includeAllProperties) {
             Map diffs = context.getPropertyDifferences();
-            for (Iterator iter = diffs.keySet().iterator(); iter.hasNext();) {
-                String key = (String) iter.next();
-                Object prop = context.getPropertyNonReplicable(key);
-                if (prop instanceof Serializable) { // First check whether it is serializable
+            synchronized (context) {
+                for (Iterator iter = diffs.keySet().iterator(); iter.hasNext();) {
+                    String key = (String) iter.next();
+                    Object prop = context.getPropertyNonReplicable(key);
+                    if (prop instanceof Serializable) { // First check whether it is serializable
 
-                    // Next check whether it matches an excluded pattern
-                    if (!isExcluded(key, context.getClass().getName(), excludedPropertyPatterns)) {
-                        log.debug("sending property =" + key + "-" + prop);
-                        PropertyDifference diff = (PropertyDifference) diffs.get(key);
-                        diff.setValue(prop);
-                        updateCmd.addProperty(diff);
+                        // Next check whether it matches an excluded pattern
+                        if (!isExcluded(key, context.getClass().getName(), excludedPropertyPatterns)) {
+                            log.debug("sending property =" + key + "-" + prop);
+                            PropertyDifference diff = (PropertyDifference) diffs.get(key);
+                            diff.setValue(prop);
+                            updateCmd.addProperty(diff);
+                        }
                     }
                 }
             }
         } else {
-            for (Iterator iter = context.getPropertyNames(); iter.hasNext();) {
-                String key = (String) iter.next();
-                Object prop = context.getPropertyNonReplicable(key);
-                if (prop instanceof Serializable) { // First check whether it is serializable
+            synchronized (context) {
+                for (Iterator iter = context.getPropertyNames(); iter.hasNext();) {
+                    String key = (String) iter.next();
+                    Object prop = context.getPropertyNonReplicable(key);
+                    if (prop instanceof Serializable) { // First check whether it is serializable
 
-                    // Next check whether it matches an excluded pattern
-                    if (!isExcluded(key, context.getClass().getName(), excludedPropertyPatterns)) {
-                        log.debug("sending property =" + key + "-" + prop);
-                        PropertyDifference diff = new PropertyDifference(key, prop, false);
-                        updateCmd.addProperty(diff);
+                        // Next check whether it matches an excluded pattern
+                        if (!isExcluded(key, context.getClass().getName(), excludedPropertyPatterns)) {
+                            log.debug("sending property =" + key + "-" + prop);
+                            PropertyDifference diff = new PropertyDifference(key, prop, false);
+                            updateCmd.addProperty(diff);
+                        }
                     }
                 }
             }

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=543446&r1=543445&r2=543446
==============================================================================
--- 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 Fri Jun  1 02:36:04 2007
@@ -37,7 +37,6 @@
 
     public static void addAcknowledgement(String messageUniqueId,
                                           String memberId) {
-        System.err.println("######### Added ACK for msg " + messageUniqueId + " from member " + memberId);
         MessageACK ack = (MessageACK) messageAckTable.get(messageUniqueId);
         if (ack != null) {
             List memberList = ack.getMemberList();
@@ -47,7 +46,6 @@
 
     public static boolean isMessageAcknowledged(String messageUniqueId,
                                                 ChannelSender sender) throws ClusteringFault {
-        System.err.println("########## Call to isMessageAcknowledged for msg UUID " + messageUniqueId);
         boolean isAcknowledged = false;
         MessageACK ack = (MessageACK) messageAckTable.get(messageUniqueId);
         List memberList = ack.getMemberList();
@@ -55,17 +53,21 @@
         // Check that all members in the memberList are same as the total member list,
         // which will indicate that all members have ACKed the message
         Member[] members = sender.getChannel().getMembers();
-        for (int i = 0; i < members.length; i++) {
-            Member member = members[i];
-            if (!memberList.contains(member.getName())) {
+        if (members.length == 0) {
+            isAcknowledged = true;
+        } else {
+            for (int i = 0; i < members.length; i++) {
+                Member member = members[i];
+                if (!memberList.contains(member.getName())) {
 
-                // At this point, resend the original message back to the node which has not
-                // sent an ACK
-                sender.sendToMember(ack.getCommand(), member);
-                isAcknowledged = false;
-                break;
-            } else {
-                isAcknowledged = true;
+                    // At this point, resend the original message back to the node which has not
+                    // sent an ACK
+                    sender.sendToMember(ack.getCommand(), member);
+                    isAcknowledged = false;
+                    break;
+                } else {
+                    isAcknowledged = true;
+                }
             }
         }
 

Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesUtil.java?view=diff&rev=543446&r1=543445&r2=543446
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesUtil.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesUtil.java Fri Jun  1 02:36:04 2007
@@ -39,7 +39,7 @@
                             host = host == null ? ("" + hostBts[j]) : (host + "." + hostBts[j]);
                         }
                     }
-                    log.info("Member " + (i + 1) + " " + members[i].getName());
+                    log.info("Member" + (i + 1) + " " + members[i].getName());
                 }
             } else {
                 log.info("No members in current cluster");



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org