You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2014/05/17 03:37:27 UTC

git commit: fixing lb port mapping handling issue

Repository: incubator-stratos
Updated Branches:
  refs/heads/master aa27fba8d -> 83905b2d3


fixing lb port mapping handling issue


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/83905b2d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/83905b2d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/83905b2d

Branch: refs/heads/master
Commit: 83905b2d34025df6ba1bada8ee230249a3cd62a5
Parents: aa27fba
Author: Nirmal Fernando <ni...@apache.org>
Authored: Sat May 17 07:06:55 2014 +0530
Committer: Nirmal Fernando <ni...@apache.org>
Committed: Sat May 17 07:06:55 2014 +0530

----------------------------------------------------------------------
 .../TenantAwareLoadBalanceEndpoint.java         | 30 ++++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/83905b2d/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java
index 9e570fc..0dd0bd9 100644
--- a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java
+++ b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java
@@ -78,6 +78,8 @@ public class TenantAwareLoadBalanceEndpoint extends org.apache.synapse.endpoints
 
     /* Sessions time out interval */
     private long sessionTimeout = -1;
+    
+    private final static Pattern LAST_INT_PATTERN = Pattern.compile("[^0-9]+([0-9]+)$");
 
     @Override
     public void init(SynapseEnvironment synapseEnvironment) {
@@ -154,8 +156,17 @@ public class TenantAwareLoadBalanceEndpoint extends org.apache.synapse.endpoints
     private void setupLoadBalancerContextProperties(MessageContext synCtx, org.apache.axis2.clustering.Member currentMember) {
         String lbHostName = extractTargetHost(synCtx);
         org.apache.axis2.context.MessageContext axis2MsgCtx = ((Axis2MessageContext) synCtx).getAxis2MessageContext();
-        TransportInDescription httpTransportIn = axis2MsgCtx.getConfigurationContext().getAxisConfiguration().getTransportIn("http");
-        TransportInDescription httpsTransportIn = axis2MsgCtx.getConfigurationContext().getAxisConfiguration().getTransportIn("https");
+        
+        String httpTransportName = "http", httpsTransportName = "https";
+        String transportId = getTransportId(extractIncomingTransport(synCtx));
+               
+		if (transportId != null) {
+			httpsTransportName = httpsTransportName.concat(transportId);
+			httpTransportName = httpTransportName.concat(transportId);
+		}
+        
+        TransportInDescription httpTransportIn = axis2MsgCtx.getConfigurationContext().getAxisConfiguration().getTransportIn(httpTransportName);
+        TransportInDescription httpsTransportIn = axis2MsgCtx.getConfigurationContext().getAxisConfiguration().getTransportIn(httpsTransportName);
         String lbHttpPort = (String) httpTransportIn.getParameter("port").getValue();
         String lbHttpsPort = (String) httpsTransportIn.getParameter("port").getValue();
         String clusterId = currentMember.getProperties().getProperty(Constants.CLUSTER_ID);
@@ -165,6 +176,16 @@ public class TenantAwareLoadBalanceEndpoint extends org.apache.synapse.endpoints
         synCtx.setProperty(Constants.LB_HTTPS_PORT, lbHttpsPort);
         synCtx.setProperty(Constants.CLUSTER_ID, clusterId);
     }
+    
+	protected String getTransportId(String incomingTransportName) {
+		// pattern match and find the transport id.
+		Matcher matcher = LAST_INT_PATTERN.matcher(incomingTransportName);
+		if (matcher.find()) {
+			return matcher.group(1);
+		}
+
+		return null;
+	}
 
 
     /**
@@ -506,6 +527,11 @@ public class TenantAwareLoadBalanceEndpoint extends org.apache.synapse.endpoints
         org.apache.axis2.context.MessageContext axis2MessageContext = ((Axis2MessageContext) synCtx).getAxis2MessageContext();
         return axis2MessageContext.getTransportIn().getName();
     }
+    
+    private String extractIncomingTransport(MessageContext synCtx) {
+        org.apache.axis2.context.MessageContext axis2MessageContext = ((Axis2MessageContext) synCtx).getAxis2MessageContext();
+        return axis2MessageContext.getIncomingTransportName();
+    }
 
     /**
      * @param to     get an endpoint to send the information