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/07/12 21:44:50 UTC

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

Author: azeez
Date: Thu Jul 12 12:44:49 2007
New Revision: 555735

URL: http://svn.apache.org/viewvc?view=rev&rev=555735
Log:
When only configuration management is enabled, the cluster should get prioperly initialized


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?view=diff&rev=555735&r1=555734&r2=555735
==============================================================================
--- 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 Thu Jul 12 12:44:49 2007
@@ -53,7 +53,7 @@
 public class TribesClusterManager implements ClusterManager {
     private static final Log log = LogFactory.getLog(TribesClusterManager.class);
 
-    private DefaultConfigurationManager configurationManager;
+        private DefaultConfigurationManager configurationManager;
     private DefaultContextManager contextManager;
 
     private HashMap parameters;
@@ -129,53 +129,51 @@
             configurationManager.setSender(sender);
         }
         controlCmdProcessor.setChannelSender(sender);
+        channel = new GroupChannel();
 
-        try {
-
-            channel = new GroupChannel();
-
-            // Set the domain for this Node
-            Parameter domainParam = getParameter(ClusteringConstants.DOMAIN);
-            byte[] domain;
-            if (domainParam != null) {
-                domain = ((String) domainParam.getValue()).getBytes();
-            } else {
-                domain = "apache.axis2.domain".getBytes();
+        // Set the domain for this Node
+        Parameter domainParam = getParameter(ClusteringConstants.DOMAIN);
+        byte[] domain;
+        if (domainParam != null) {
+            domain = ((String) domainParam.getValue()).getBytes();
+        } else {
+            domain = "apache.axis2.domain".getBytes();
+        }
+        channel.getMembershipService().setDomain(domain);
+        DomainFilterInterceptor dfi = new DomainFilterInterceptor();
+        dfi.setDomain(domain);
+        channel.addInterceptor(dfi);
+
+        // Add the NonBlockingCoordinator. This is used for leader election
+        /*nbc = new NonBlockingCoordinator() {
+            public void fireInterceptorEvent(InterceptorEvent event) {
+                String status = event.getEventTypeDesc();
+                System.err.println("$$$$$$$$$$$$ NBC status=" + status);
+                int type = event.getEventType();
             }
-            channel.getMembershipService().setDomain(domain);
-            DomainFilterInterceptor dfi = new DomainFilterInterceptor();
-            dfi.setDomain(domain);
-            channel.addInterceptor(dfi);
-
-            // Add the NonBlockingCoordinator. This is used for leader election
-            /*nbc = new NonBlockingCoordinator() {
-                public void fireInterceptorEvent(InterceptorEvent event) {
-                    String status = event.getEventTypeDesc();
-                    System.err.println("$$$$$$$$$$$$ NBC status=" + status);
-                    int type = event.getEventType();
-                }
-            };
-            nbc.setPrevious(dfi);
-            channel.addInterceptor(nbc);*/
-
-            /*Properties mcastProps = channel.getMembershipService().getProperties();
-            mcastProps.setProperty("mcastPort", "5555");
-            mcastProps.setProperty("mcastAddress", "224.10.10.10");
-            mcastProps.setProperty("mcastClusterDomain", "catalina");
-            mcastProps.setProperty("bindAddress", "localhost");
-            mcastProps.setProperty("memberDropTime", "20000");
-            mcastProps.setProperty("mcastFrequency", "500");
-            mcastProps.setProperty("tcpListenPort", "4000");
-            mcastProps.setProperty("tcpListenHost", "127.0.0.1");*/
-
-            /*TcpFailureDetector tcpFailureDetector = new TcpFailureDetector();
-            tcpFailureDetector.setPrevious(nbc);
-            channel.addInterceptor(tcpFailureDetector);
-            tcpFailureDetector.*/
-
-            channel.addChannelListener(channelListener);
-            TribesMembershipListener membershipListener = new TribesMembershipListener();
-            channel.addMembershipListener(membershipListener);
+        };
+        nbc.setPrevious(dfi);
+        channel.addInterceptor(nbc);*/
+
+        /*Properties mcastProps = channel.getMembershipService().getProperties();
+       mcastProps.setProperty("mcastPort", "5555");
+       mcastProps.setProperty("mcastAddress", "224.10.10.10");
+       mcastProps.setProperty("mcastClusterDomain", "catalina");
+       mcastProps.setProperty("bindAddress", "localhost");
+       mcastProps.setProperty("memberDropTime", "20000");
+       mcastProps.setProperty("mcastFrequency", "500");
+       mcastProps.setProperty("tcpListenPort", "4000");
+       mcastProps.setProperty("tcpListenHost", "127.0.0.1");*/
+
+        /*TcpFailureDetector tcpFailureDetector = new TcpFailureDetector();
+        tcpFailureDetector.setPrevious(nbc);
+        channel.addInterceptor(tcpFailureDetector);
+        tcpFailureDetector.*/
+
+        channel.addChannelListener(channelListener);
+        TribesMembershipListener membershipListener = new TribesMembershipListener();
+        channel.addMembershipListener(membershipListener);
+        try {
             channel.start(Channel.DEFAULT);
             String localHost = TribesUtil.getLocalHost(channel);
             if (localHost.startsWith("127.0.")) {
@@ -184,59 +182,60 @@
                                           ". Please set an IP address other than " +
                                           localHost + " in your /etc/hosts file and retry.");
             }
+        } catch (ChannelException e) {
+            throw new ClusteringFault("Error starting Tribes channel", e);
+        }
+        sender.setChannel(channel);
 
-            sender.setChannel(channel);
-
-            if (contextManager != null) {
-                contextManager.setSender(sender);
-                channelListener.setContextManager(contextManager);
-
-                Member[] members = channel.getMembers();
-                log.info("Local Tribes Member " + TribesUtil.getLocalHost(channel));
-                TribesUtil.printMembers(members);
-
-                // If there is at least one member in the Tribe, get the current state from a member
-                Random random = new Random();
-                int numberOfTries = 0; // Don't keep on trying infinitely
-
-                // Keep track of members to whom we already sent a GetStateCommand
-                // Do not send another request to these members
-                List sentMembersList = new ArrayList();
-                while (members.length > 0 &&
-                       configurationContext.
-                               getPropertyNonReplicable(ClusteringConstants.CLUSTER_INITIALIZED) == null
-                       && numberOfTries < 50) {
-
-                    // While there are members and GetStateResponseCommand is not received do the following
-                    try {
-                        members = channel.getMembers();
-                        int memberIndex = random.nextInt(members.length);
-                        Member member = members[memberIndex];
-                        if (!sentMembersList.contains(TribesUtil.getHost(member))) {
-                            long tts = sender.sendToMember(new GetStateCommand(), member);
-                            configurationContext.
-                                    setNonReplicableProperty(ClusteringConstants.TIME_TO_SEND,
-                                                             new Long(tts));
-                            sentMembersList.add(TribesUtil.getHost(member));
-                            log.debug("WAITING FOR STATE UPDATE...");
-                            Thread.sleep(tts + 5);
-                        }
-                    } catch (Exception e) {
-                        log.error(e);
-                        break;
+        Member[] members = channel.getMembers();
+        log.info("Local Tribes Member " + TribesUtil.getLocalHost(channel));
+        TribesUtil.printMembers(members);
+
+        if (contextManager != null) {
+            contextManager.setSender(sender);
+            channelListener.setContextManager(contextManager);
+
+            // If there is at least one member in the Tribe, get the current state from a member
+            Random random = new Random();
+            int numberOfTries = 0; // Don't keep on trying infinitely
+
+            // Keep track of members to whom we already sent a GetStateCommand
+            // Do not send another request to these members
+            List sentMembersList = new ArrayList();
+            while (members.length > 0 &&
+                   configurationContext.
+                           getPropertyNonReplicable(ClusteringConstants.CLUSTER_INITIALIZED) == null
+                   && numberOfTries < 50) {
+
+                // While there are members and GetStateResponseCommand is not received do the following
+                try {
+                    members = channel.getMembers();
+                    int memberIndex = random.nextInt(members.length);
+                    Member member = members[memberIndex];
+                    if (!sentMembersList.contains(TribesUtil.getHost(member))) {
+                        long tts = sender.sendToMember(new GetStateCommand(), member);
+                        configurationContext.
+                                setNonReplicableProperty(ClusteringConstants.TIME_TO_SEND,
+                                                         new Long(tts));
+                        sentMembersList.add(TribesUtil.getHost(member));
+                        log.debug("WAITING FOR STATE UPDATE...");
+                        Thread.sleep(tts + 5);
                     }
-                    numberOfTries++;
+                } catch (Exception e) {
+                    log.error(e);
+                    break;
                 }
-                configurationContext.
-                        setNonReplicableProperty(ClusteringConstants.CLUSTER_INITIALIZED,
-                                                 "true");
-                ClusteringContextListener contextListener = new ClusteringContextListener(sender);
-                configurationContext.addContextListener(contextListener);
+                numberOfTries++;
             }
-        } catch (ChannelException e) {
-            String message = "Error starting Tribes channel";
-            throw new ClusteringFault(message, e);
+            ClusteringContextListener contextListener = new ClusteringContextListener(sender);
+            configurationContext.addContextListener(contextListener);
         }
+//        } catch (ChannelException e) {
+//            String message = "Error starting Tribes channel";
+//            throw new ClusteringFault(message, e);
+//        }
+        configurationContext.
+                setNonReplicableProperty(ClusteringConstants.CLUSTER_INITIALIZED, "true");
         configurationContext.removeProperty(ClusteringConstants.BLOCK_ALL_REQUESTS);
     }
 



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