You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by in...@apache.org on 2008/11/14 11:56:17 UTC

svn commit: r713974 - in /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints: AbstractEndpoint.java EndpointView.java FailoverEndpoint.java LoadbalanceEndpoint.java SALoadbalanceEndpoint.java

Author: indika
Date: Fri Nov 14 02:56:17 2008
New Revision: 713974

URL: http://svn.apache.org/viewvc?rev=713974&view=rev
Log:
Fix an issue when there is no name for endpoint and try to access Mean instance which is null as Mean instance is created only when there is a name for an endpoint , so here it is null as name is null

Modified:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointView.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/FailoverEndpoint.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/LoadbalanceEndpoint.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/SALoadbalanceEndpoint.java

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java?rev=713974&r1=713973&r2=713974&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java Fri Nov 14 02:56:17 2008
@@ -415,4 +415,14 @@
                     + "], [To : " + synMessageContext.getTo() + "]");
         }
     }
+
+    protected void informFailure(MessageContext synCtx, int errorCode, String errorMsg) {
+
+        if (synCtx.getProperty(SynapseConstants.LAST_ENDPOINT) == null) {
+            synCtx.setProperty(SynapseConstants.ERROR_CODE, errorCode);
+            synCtx.setProperty(SynapseConstants.ERROR_MESSAGE, errorMsg);
+            synCtx.setProperty(SynapseConstants.ERROR_DETAIL, errorMsg);
+        }
+        onFault(synCtx);
+    }
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointView.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointView.java?rev=713974&r1=713973&r2=713974&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointView.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointView.java Fri Nov 14 02:56:17 2008
@@ -84,7 +84,9 @@
     public void switchOn() throws Exception {
         if (endpoint.getChildren() != null) {
             for (Endpoint e : endpoint.getChildren()) {
-                e.getMetricsMBean().switchOn();
+                if (e.getMetricsMBean() != null) {
+                    e.getMetricsMBean().switchOn();
+                }
             }
         } else {
             if (endpoint.getContext() != null) {
@@ -95,12 +97,15 @@
 
     /**
      * Switch off a leaf endpoint, or all endpoints of a group - for maintenence
+     *
      * @throws Exception
      */
     public void switchOff() throws Exception {
         if (endpoint.getChildren() != null) {
             for (Endpoint e : endpoint.getChildren()) {
-                e.getMetricsMBean().switchOff();
+                if (e.getMetricsMBean() != null) {
+                    e.getMetricsMBean().switchOff();
+                }
             }
         } else {
             if (endpoint.getContext() != null) {

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/FailoverEndpoint.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/FailoverEndpoint.java?rev=713974&r1=713973&r2=713974&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/FailoverEndpoint.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/FailoverEndpoint.java Fri Nov 14 02:56:17 2008
@@ -53,12 +53,18 @@
             isARetry = true;
         }
 
+        if (getChildren().isEmpty()) {
+            informFailure(synCtx, SynapseConstants.ENDPOINT_FO_NONE_READY,
+                    "FailoverLoadbalance endpoint : " + getName() + " - no child endpoints");
+            return;
+        }
+        
         if (currentEndpoint == null) {
             currentEndpoint = getChildren().get(0);
         }
 
         if (currentEndpoint.readyToSend()) {
-            if (isARetry) {
+            if (isARetry && metricsMBean != null) {
                 metricsMBean.reportSendingFault(SynapseConstants.ENDPOINT_FO_FAIL_OVER);
             }
             synCtx.pushFaultHandler(this);
@@ -70,7 +76,7 @@
                 if (endpoint.readyToSend()) {
                     foundEndpoint = true;
                     currentEndpoint = endpoint;
-                    if (isARetry) {
+                    if (isARetry && metricsMBean != null) {
                         metricsMBean.reportSendingFault(SynapseConstants.ENDPOINT_FO_FAIL_OVER);
                     }
                     synCtx.pushFaultHandler(this);
@@ -80,16 +86,8 @@
             }
 
             if (!foundEndpoint) {
-                // if this is not a retry
-                if (synCtx.getProperty(SynapseConstants.LAST_ENDPOINT) == null) {
-                    synCtx.setProperty(SynapseConstants.ERROR_CODE, SynapseConstants.ENDPOINT_FO_NONE_READY);
-                    synCtx.setProperty(SynapseConstants.ERROR_MESSAGE,
-                        "Failover endpoint : " + getName() + " - no ready child endpoints");
-                    synCtx.setProperty(SynapseConstants.ERROR_DETAIL,
-                        "Failover endpoint : " + getName() + " - no ready child endpoints");
-                    synCtx.setProperty(SynapseConstants.ERROR_EXCEPTION, null);
-                }
-                super.onFault(synCtx);
+                informFailure(synCtx, SynapseConstants.ENDPOINT_FO_NONE_READY, "Failover endpoint : " + getName()
+                        + " - no ready child endpoints");
             }
         }
     }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/LoadbalanceEndpoint.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/LoadbalanceEndpoint.java?rev=713974&r1=713973&r2=713974&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/LoadbalanceEndpoint.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/LoadbalanceEndpoint.java Fri Nov 14 02:56:17 2008
@@ -70,23 +70,18 @@
                     synCtx.getEnvelope().build();
                 }
             } else {
-                // this is a retry, where we are now failing over to an active node
-                metricsMBean.reportSendingFault(SynapseConstants.ENDPOINT_LB_FAIL_OVER);
+                if (metricsMBean != null) {
+                    // this is a retry, where we are now failing over to an active node
+                    metricsMBean.reportSendingFault(SynapseConstants.ENDPOINT_LB_FAIL_OVER);
+                }
             }
             synCtx.pushFaultHandler(this);
             endpoint.send(synCtx);
 
         } else {
             // if this is not a retry
-            if (synCtx.getProperty(SynapseConstants.LAST_ENDPOINT) == null) {
-                synCtx.setProperty(SynapseConstants.ERROR_CODE, SynapseConstants.ENDPOINT_LB_NONE_READY);
-                synCtx.setProperty(SynapseConstants.ERROR_MESSAGE,
-                    "Loadbalance endpoint : " + getName() + " - no ready child endpoints");
-                synCtx.setProperty(SynapseConstants.ERROR_DETAIL,
-                    "Loadbalance endpoint : " + getName() + " - no ready child endpoints");
-                synCtx.setProperty(SynapseConstants.ERROR_EXCEPTION, null);
-            }
-            super.onFault(synCtx);
+            informFailure(synCtx, SynapseConstants.ENDPOINT_LB_NONE_READY, "Loadbalance endpoint : " +
+                    getName() + " - no ready child endpoints");
         }
     }
 

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/SALoadbalanceEndpoint.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/SALoadbalanceEndpoint.java?rev=713974&r1=713973&r2=713974&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/SALoadbalanceEndpoint.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/SALoadbalanceEndpoint.java Fri Nov 14 02:56:17 2008
@@ -275,17 +275,7 @@
             synCtx.pushFaultHandler(this);
             endpoint.send(synCtx);
         }
-    }
-
-    private void informFailure(MessageContext synCtx, int errorCode, String errorMsg) {
-
-        if (synCtx.getProperty(SynapseConstants.LAST_ENDPOINT) == null) {
-            synCtx.setProperty(SynapseConstants.ERROR_CODE, errorCode);
-            synCtx.setProperty(SynapseConstants.ERROR_MESSAGE, errorMsg);
-            synCtx.setProperty(SynapseConstants.ERROR_DETAIL, errorMsg);
-        }
-        super.onFault(synCtx);
-    }
+    }  
 
     /*
     * Preparing the endpoint sequence for a new session establishment request