You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by la...@apache.org on 2015/04/02 10:38:32 UTC

stratos git commit: Fix concurrency issue in payload passing

Repository: stratos
Updated Branches:
  refs/heads/master 8985d96eb -> 0d7ee705a


Fix concurrency issue in payload passing


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

Branch: refs/heads/master
Commit: 0d7ee705af3c6886c6369ddbc0ede25a3f8ad88f
Parents: 8985d96
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Thu Apr 2 14:07:19 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Thu Apr 2 14:08:17 2015 +0530

----------------------------------------------------------------------
 .../apache/stratos/cloud/controller/iaases/Iaas.java    |  3 ++-
 .../stratos/cloud/controller/iaases/JcloudsIaas.java    |  4 +++-
 .../controller/iaases/kubernetes/KubernetesIaas.java    |  3 ++-
 .../stratos/cloud/controller/iaases/mock/MockIaas.java  |  3 ++-
 .../services/impl/CloudControllerServiceImpl.java       |  6 +++---
 .../cloud/controller/services/impl/InstanceCreator.java | 12 +++++++-----
 6 files changed, 19 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/0d7ee705/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/Iaas.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/Iaas.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/Iaas.java
index fef37ec..2fc0c36 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/Iaas.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/Iaas.java
@@ -55,9 +55,10 @@ public abstract class Iaas {
      * Create vm/container instance.
      *
      * @param memberContext
+     * @param payload
      * @return updated memberContext
      */
-    public abstract MemberContext startInstance(MemberContext memberContext) throws CartridgeNotFoundException;
+    public abstract MemberContext startInstance(MemberContext memberContext, byte[] payload) throws CartridgeNotFoundException;
 
     /**
      * This will deallocate/release the given IP address back to pool.

http://git-wip-us.apache.org/repos/asf/stratos/blob/0d7ee705/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/JcloudsIaas.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/JcloudsIaas.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/JcloudsIaas.java
index 099b991..f1c8448 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/JcloudsIaas.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/JcloudsIaas.java
@@ -101,10 +101,12 @@ public abstract class JcloudsIaas extends Iaas {
     }
 
     @Override
-    public MemberContext startInstance(MemberContext memberContext) {
+    public MemberContext startInstance(MemberContext memberContext, byte[] payload) {
         // generate the group id from domain name and sub domain name.
         // Should have lower-case ASCII letters, numbers, or dashes.
         // Should have a length between 3-15
+
+        this.setDynamicPayload(payload);
         String clusterId = memberContext.getClusterId();
         String str = clusterId.length() > 10 ? clusterId.substring(0, 10) : clusterId.substring(0, clusterId.length());
         String group = str.replaceAll("[^a-z0-9-]", "");

http://git-wip-us.apache.org/repos/asf/stratos/blob/0d7ee705/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
index 937526a..e557692 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
@@ -116,7 +116,8 @@ public class KubernetesIaas extends Iaas {
     }
 
     @Override
-    public MemberContext startInstance(MemberContext memberContext) throws CartridgeNotFoundException {
+    public MemberContext startInstance(MemberContext memberContext, byte[] payload) throws CartridgeNotFoundException {
+        setDynamicPayload(payload);
         return startContainer(memberContext);
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/0d7ee705/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaas.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaas.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaas.java
index 392b9a8..cf93aef 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaas.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaas.java
@@ -54,7 +54,7 @@ public class MockIaas extends Iaas {
     }
 
     @Override
-    public MemberContext startInstance(MemberContext memberContext) {
+    public MemberContext startInstance(MemberContext memberContext, byte[] payload) {
         MockInstanceContext mockInstanceContext = new MockInstanceContext(
                 memberContext.getApplicationId(),
                 memberContext.getCartridgeType(),
@@ -64,6 +64,7 @@ public class MockIaas extends Iaas {
                 memberContext.getNetworkPartitionId(),
                 memberContext.getPartition().getId()
         );
+        setDynamicPayload(payload);
         MockInstanceMetadata mockInstanceMetadata = apiClient.startInstance(mockInstanceContext);
         memberContext.setInstanceId(mockInstanceMetadata.getInstanceId());
         return memberContext;

http://git-wip-us.apache.org/repos/asf/stratos/blob/0d7ee705/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
index a6d7f1d..7386872 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
@@ -428,8 +428,8 @@ public class CloudControllerServiceImpl implements CloudControllerService {
                 log.debug("Payload: " + payload.toString());
             }
 
-            iaasProvider.setPayload(payload.toString().getBytes());
-            iaas.setDynamicPayload(iaasProvider.getPayload());
+//            iaasProvider.setPayload(payload.toString().getBytes());
+//            iaas.setDynamicPayload(iaasProvider.getPayload());
 
             if (clusterContext.isVolumeRequired()) {
                 
@@ -459,7 +459,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
                         "[member] %s", instanceContext.getClusterId(), instanceContext.getClusterInstanceId(),
                         memberId));
             }
-            executorService.execute(new InstanceCreator(memberContext, iaasProvider));
+            executorService.execute(new InstanceCreator(memberContext, iaasProvider, payload.toString().getBytes()));
 
             return memberContext;
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/0d7ee705/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/InstanceCreator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/InstanceCreator.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/InstanceCreator.java
index 2c52d8f..e8d2c77 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/InstanceCreator.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/InstanceCreator.java
@@ -41,10 +41,12 @@ public class InstanceCreator implements Runnable {
 
     private MemberContext memberContext;
     private IaasProvider iaasProvider;
+    private byte[] payload;
 
-    public InstanceCreator(MemberContext memberContext, IaasProvider iaasProvider) {
+    public InstanceCreator(MemberContext memberContext, IaasProvider iaasProvider, byte[] payload) {
         this.memberContext = memberContext;
         this.iaasProvider = iaasProvider;
+        this.payload = payload;
     }
 
     @Override
@@ -61,9 +63,9 @@ public class InstanceCreator implements Runnable {
             if(log.isDebugEnabled()){
 
                 log.debug(String.format("Payload passed to instance created, [member] %s [payload] %s",
-                        memberContext.getMemberId(),  new String(iaasProvider.getPayload())));
+                        memberContext.getMemberId(),  new String(payload)));
             }
-            memberContext = startInstance(iaas, memberContext);
+            memberContext = startInstance(iaas, memberContext, payload);
 
             if (log.isInfoEnabled()) {
                 log.info(String.format("Instance started successfully: [cartridge-type] %s [cluster-id] %s [instance-id] %s " +
@@ -103,8 +105,8 @@ public class InstanceCreator implements Runnable {
         }
     }
 
-    private MemberContext startInstance(Iaas iaas, MemberContext memberContext) throws CartridgeNotFoundException {
-        memberContext = iaas.startInstance(memberContext);
+    private MemberContext startInstance(Iaas iaas, MemberContext memberContext, byte[] payload) throws CartridgeNotFoundException {
+        memberContext = iaas.startInstance(memberContext, payload);
 
         // Validate instance id
         String instanceId = memberContext.getInstanceId();