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 <[email protected]> Authored: Thu Apr 2 14:07:19 2015 +0530 Committer: Lahiru Sandaruwan <[email protected]> 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();
