You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by az...@apache.org on 2008/05/26 10:53:21 UTC

svn commit: r660131 - /webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java

Author: azeez
Date: Mon May 26 01:53:21 2008
New Revision: 660131

URL: http://svn.apache.org/viewvc?rev=660131&view=rev
Log:
Do not fail if an error occurs while trying to join the group. We have 
to retry.


Modified:
    webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java

Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java?rev=660131&r1=660130&r2=660131&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java Mon May 26 01:53:21 2008
@@ -178,11 +178,11 @@
         // If a WKA scheme is used, JOIN the group and get the member list
         if (membershipScheme.equals(ClusteringConstants.MembershipScheme.WKA_BASED)
             && membershipManager.getMembers().length > 0) {
-            try {
-                log.info("Sending JOIN message to WKA members...");
-                Member[] wkaMembers = membershipManager.getMembers(); // The well-known members
-                Response[] responses;
-                do {
+            log.info("Sending JOIN message to WKA members...");
+            Member[] wkaMembers = membershipManager.getMembers(); // The well-known members
+            Response[] responses = null;
+            do {
+                try {
                     responses = rpcChannel.send(wkaMembers,
                                                 new JoinGroupCommand(),
                                                 RpcChannel.ALL_REPLY,
@@ -194,33 +194,35 @@
                         } catch (InterruptedException ignored) {
                         }
                     }
-                } while (responses.length == 0);  // Wait until we've received at least one response
+                } catch (Exception e) {
+                    String msg = "Error occurred while trying to send JOIN request to WKA members";
+                    log.error(msg, e);
+                }
 
-                for (Response response : responses) {
-                    MemberListCommand command = (MemberListCommand) response.getMessage();
-                    command.setMembershipManager(membershipManager);
-                    command.setStaticMembershipInterceptor(staticMembershipInterceptor);
-                    command.setSender(response.getSource());
-                    command.execute(configurationContext);
-                }
-
-                if (membershipManager.getMembers().length > 0) {
-                    log.info("Sending MEMBER_JOINED to group...");
-                    MemberJoinedCommand memberJoinedCommand = new MemberJoinedCommand();
-                    memberJoinedCommand.setMember(membershipManager.getLocalMember());
-                    try {
-                        rpcChannel.send(membershipManager.getMembers(), memberJoinedCommand,
-                                        RpcChannel.ALL_REPLY, Channel.SEND_OPTIONS_ASYNCHRONOUS, 10000);
-                    } catch (ChannelException e) {
-                        String msg = "Could not send MEMBER_JOINED message to group";
-                        log.error(msg, e);
-                        throw new ClusteringFault(msg, e);
-                    }
+                // TODO: If we do not get a response within some time, try to recover from this fault
+            }
+            while (responses == null || responses.length == 0);  // Wait until we've received at least one response
+
+            for (Response response : responses) {
+                MemberListCommand command = (MemberListCommand) response.getMessage();
+                command.setMembershipManager(membershipManager);
+                command.setStaticMembershipInterceptor(staticMembershipInterceptor);
+                command.setSender(response.getSource());
+                command.execute(configurationContext);
+            }
+
+            if (membershipManager.getMembers().length > 0) {
+                log.info("Sending MEMBER_JOINED to group...");
+                MemberJoinedCommand memberJoinedCommand = new MemberJoinedCommand();
+                memberJoinedCommand.setMember(membershipManager.getLocalMember());
+                try {
+                    rpcChannel.send(membershipManager.getMembers(), memberJoinedCommand,
+                                    RpcChannel.ALL_REPLY, Channel.SEND_OPTIONS_ASYNCHRONOUS, 10000);
+                } catch (ChannelException e) {
+                    String msg = "Could not send MEMBER_JOINED message to group";
+                    log.error(msg, e);
+                    throw new ClusteringFault(msg, e);
                 }
-            } catch (ChannelException e) {
-                String msg = "Could not JOIN group";
-                log.error(msg, e);
-                throw new ClusteringFault(msg, e);
             }
         }
 
@@ -703,6 +705,7 @@
                             } catch (InterruptedException ignored) {
                             }
                         }
+                        // TODO: If we do not get a response within some time, try to recover from this fault
                     } while (responses.length == 0);
                     if (responses.length > 0) {
                         ((ControlCommand) responses[0].getMessage()).execute(configurationContext); // Do the initialization