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();