[wsas-java-dev] svn commit r1761 - trunk/wsas/java/modules/clustering/src/org/wso2/wsas/clustering

svn at wso2.org svn at wso2.org
Thu Apr 5 02:40:45 PDT 2007


Author: azeez
Date: Thu Apr  5 02:40:41 2007
New Revision: 1761

Modified:
   trunk/wsas/java/modules/clustering/src/org/wso2/wsas/clustering/NodeManager.java
   trunk/wsas/java/modules/clustering/src/org/wso2/wsas/clustering/WSASConfigManagerListener.java
Log:
Few minor improvements to NodeManagement.

Modified: trunk/wsas/java/modules/clustering/src/org/wso2/wsas/clustering/NodeManager.java
==============================================================================
--- trunk/wsas/java/modules/clustering/src/org/wso2/wsas/clustering/NodeManager.java	(original)
+++ trunk/wsas/java/modules/clustering/src/org/wso2/wsas/clustering/NodeManager.java	Thu Apr  5 02:40:41 2007
@@ -41,6 +41,9 @@
         ConfigurationManager configMan = getConfigurationManager();
         if (configMan != null) {
             configMan.loadServiceGroup(serviceGroupName);
+            if (!isOperationSuccessful(configMan)) {
+                return false;
+            }
         } else {
             throw new AxisFault(CONFIG_MANAGER_NULL);
         }
@@ -52,6 +55,9 @@
         ConfigurationManager configMan = getConfigurationManager();
         if (configMan != null) {
             configMan.unloadServiceGroup(serviceGroupName);
+            if (!isOperationSuccessful(configMan)) {
+                return false;
+            }
         } else {
             throw new AxisFault(CONFIG_MANAGER_NULL);
         }
@@ -66,6 +72,9 @@
         }
         for (int i = 0; i < serviceGroupNames.length; i++) {
             configMan.unloadServiceGroup(serviceGroupNames[i]);
+            if (!isOperationSuccessful(configMan)) {
+                return false;
+            }
         }
         return true;
     }
@@ -78,6 +87,9 @@
         }
         for (int i = 0; i < serviceGroupNames.length; i++) {
             configMan.loadServiceGroup(serviceGroupNames[i]);
+            if (!isOperationSuccessful(configMan)) {
+                return false;
+            }
         }
         return true;
     }
@@ -87,7 +99,9 @@
         ConfigurationManager configMan = getConfigurationManager();
         if (configMan != null) {
 //            configMan.applyPolicy(serviceName, policyId);
-
+            if (!isOperationSuccessful(configMan)) {
+                return false;
+            }
         } else {
             throw new AxisFault(CONFIG_MANAGER_NULL);
         }
@@ -99,13 +113,16 @@
         ConfigurationManager configMan = getConfigurationManager();
         if (configMan != null) {
             configMan.reloadConfiguration();
+            if (!isOperationSuccessful(configMan)) {
+                return false;
+            }
         } else {
             throw new AxisFault(CONFIG_MANAGER_NULL);
         }
         return true;
     }
 
-    public boolean prepare() throws AxisFault{
+    public boolean prepare() throws AxisFault {
         return isPrepareSuccessful(getConfigurationManager());
     }
 
@@ -165,6 +182,25 @@
         }
     }
 
+    private boolean isOperationSuccessful(ConfigurationManager configMan) throws AxisFault {
+        delay(); // Wait for sometime, so that the failures on other nodes can be detected
+        MessageContext msgCtx = MessageContext.getCurrentMessageContext();
+        AxisService axisService = msgCtx.getAxisService();
+        Parameter opFailed = axisService.getParameter(OPERATION_FAILED);
+        boolean result;
+        if (opFailed == null) {
+            delay();
+            opFailed = axisService.getParameter(OPERATION_FAILED);
+            result = (opFailed == null);
+        } else {
+            result = false;
+        }
+        if (opFailed != null) {
+            axisService.removeParameter(opFailed);
+        }
+        return result;
+    }
+
     /**
      * @param configMan
      * @return true if the operation succeeded & prepare succeeded
@@ -192,7 +228,7 @@
 
     private void delay() {
         try {
-            Thread.sleep(5000);
+            Thread.sleep(2000);
         } catch (InterruptedException e) {
             log.error(e);
         }

Modified: trunk/wsas/java/modules/clustering/src/org/wso2/wsas/clustering/WSASConfigManagerListener.java
==============================================================================
--- trunk/wsas/java/modules/clustering/src/org/wso2/wsas/clustering/WSASConfigManagerListener.java	(original)
+++ trunk/wsas/java/modules/clustering/src/org/wso2/wsas/clustering/WSASConfigManagerListener.java	Thu Apr  5 02:40:41 2007
@@ -20,9 +20,9 @@
 import org.apache.axis2.cluster.configuration.ConfigurationManagerListener;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.AxisServiceGroup;
 import org.apache.axis2.description.Parameter;
-import org.apache.axis2.description.AxisService;
 import org.apache.axis2.engine.AxisConfiguration;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -30,7 +30,6 @@
 import org.wso2.wsas.ServerConstants;
 import org.wso2.wsas.deployment.ServerConfigurator;
 import org.wso2.wsas.util.Controllable;
-import org.wso2.wsas.util.Utils;
 
 import java.util.Iterator;
 import java.util.List;
@@ -116,11 +115,12 @@
         AxisConfiguration axisConfig = configurationContext.getAxisConfiguration();
         AxisServiceGroup serviceGroup = axisConfig.getServiceGroup(sgName);
         if (serviceGroup == null) {
+            String msg = "Service group " + sgName + " does not exist";
+            log.info(msg);
             try {
                 notifyFailureToNodeManager();
                 axisConfig.getClusterManager().getConfigurationManager().
-                        exceptionOccurred(new Exception("Service group " + sgName +
-                                                        " does not exist"));
+                        exceptionOccurred(new Exception(msg));
             } catch (Exception e) {
                 log.error(e);
             }




More information about the Wsas-java-dev mailing list