Updated Branches: refs/heads/master b1999c5de -> fcf1dc7fa
registry based persistence of CC information model - initial version Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/3ba57aac Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/3ba57aac Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/3ba57aac Branch: refs/heads/master Commit: 3ba57aacdeaccb6b02258b6623dcdee284b351a4 Parents: b1999c5 Author: Nirmal Fernando <[email protected]> Authored: Tue Dec 3 21:33:08 2013 +0530 Committer: Nirmal Fernando <[email protected]> Committed: Tue Dec 3 21:33:08 2013 +0530 ---------------------------------------------------------------------- .../impl/CloudControllerServiceImpl.java | 82 +++++++++++--------- .../runtime/FasterLookUpDataHolder.java | 14 +++- 2 files changed, 56 insertions(+), 40 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/3ba57aac/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java index e934c3d..97c967d 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java @@ -31,6 +31,7 @@ import org.apache.stratos.cloud.controller.exception.UnregisteredCartridgeExcept import org.apache.stratos.cloud.controller.exception.UnregisteredClusterException; import org.apache.stratos.cloud.controller.interfaces.CloudControllerService; import org.apache.stratos.cloud.controller.interfaces.Iaas; +import org.apache.stratos.cloud.controller.persist.Deserializer; import org.apache.stratos.cloud.controller.pojo.Cartridge; import org.apache.stratos.cloud.controller.pojo.CartridgeInfo; import org.apache.stratos.cloud.controller.pojo.ClusterContext; @@ -38,6 +39,7 @@ import org.apache.stratos.cloud.controller.pojo.IaasProvider; import org.apache.stratos.cloud.controller.pojo.MemberContext; import org.apache.stratos.cloud.controller.pojo.Registrant; import org.apache.stratos.cloud.controller.publisher.CartridgeInstanceDataPublisherTask; +import org.apache.stratos.cloud.controller.registry.RegistryManager; import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder; import org.apache.stratos.cloud.controller.topic.TopologySynchronizerTask; import org.apache.stratos.cloud.controller.topology.TopologyBuilder; @@ -56,6 +58,7 @@ import org.wso2.carbon.ntask.core.TaskInfo; import org.wso2.carbon.ntask.core.TaskInfo.TriggerInfo; import org.wso2.carbon.ntask.core.TaskManager; import org.wso2.carbon.ntask.core.service.TaskService; +import org.wso2.carbon.registry.core.exceptions.RegistryException; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -198,21 +201,22 @@ public class CloudControllerServiceImpl implements CloudControllerService { private void acquireData() { -// Object obj = RegistryManager.getInstance().retrieve(); -// if (obj != null) { -// try { -// Object dataObj = Deserializer -// .deserializeFromByteArray((byte[]) obj); -// if (dataObj instanceof FasterLookUpDataHolder) { -// FasterLookUpDataHolder serializedObj = (FasterLookUpDataHolder) dataObj; -// FasterLookUpDataHolder currentData = FasterLookUpDataHolder -// .getInstance(); -// -// // assign necessary data -// currentData.setNodeIdToServiceContextMap(serializedObj -// .getNodeIdToServiceContextMap()); -// -// // traverse through current Service Contexts + Object obj = RegistryManager.getInstance().retrieve(); + if (obj != null) { + try { + Object dataObj = Deserializer + .deserializeFromByteArray((byte[]) obj); + if (dataObj instanceof FasterLookUpDataHolder) { + FasterLookUpDataHolder serializedObj = (FasterLookUpDataHolder) dataObj; + FasterLookUpDataHolder currentData = FasterLookUpDataHolder + .getInstance(); + + // assign necessary data + currentData.setClusterIdToContext(serializedObj.getClusterIdToContext()); + currentData.setMemberIdToContext(serializedObj.getMemberIdToContext()); + currentData.setClusterIdToMemberContext(serializedObj.getClusterIdToMemberContext()); + + // traverse through current Service Contexts // for (ServiceContext ctxt : currentData.getServiceCtxtList()) { // // traverse through serialized Service Contexts // for (ServiceContext serializedCtxt : serializedObj @@ -258,18 +262,18 @@ public class CloudControllerServiceImpl implements CloudControllerService { // } // } // } -// -// log.debug("Data is retrieved from registry."); -// } else { -// log.debug("No data is persisted in registry."); -// } -// } catch (Exception e) { -// -// String msg = "Unable to acquire data from Registry. Hence, any historical data will not get reflected."; -// log.warn(msg, e); -// } -// } + log.debug("Data is retrieved from registry."); + } else { + log.debug("No data is persisted in registry."); + } + } catch (Exception e) { + + String msg = "Unable to acquire data from Registry. Hence, any historical data will not get reflected."; + log.warn(msg, e); + } + + } } @Override @@ -466,15 +470,15 @@ public class CloudControllerServiceImpl implements CloudControllerService { * Persist data in registry. */ private void persist() { -// try { -// RegistryManager.getInstance().persist( -// dataHolder); -// } catch (RegistryException e) { -// -// String msg = "Failed to persist the Cloud Controller data in registry. Further, transaction roll back also failed."; -// log.fatal(msg); -// throw new CloudControllerException(msg, e); -// } + try { + RegistryManager.getInstance().persist( + dataHolder); + } catch (RegistryException e) { + + String msg = "Failed to persist the Cloud Controller data in registry. Further, transaction roll back also failed."; + log.fatal(msg); + throw new CloudControllerException(msg, e); + } } private String generateMemberId(String clusterId) { @@ -920,9 +924,11 @@ public class CloudControllerServiceImpl implements CloudControllerService { String cartridgeType = registrant.getCartridgeType(); String clusterId = registrant.getClusterId(); String payload = registrant.getPayload(); + String hostName = registrant.getHostName(); - if(cartridgeType == null || clusterId == null || payload == null) { - String msg = "Null Argument/s detected: Cartridge type: "+cartridgeType+", Cluster Id: "+clusterId+", Payload: "+payload; + if(cartridgeType == null || clusterId == null || payload == null || hostName == null) { + String msg = "Null Argument/s detected: Cartridge type: "+cartridgeType+", " + + "Cluster Id: "+clusterId+", Payload: "+payload+", Host name: "+hostName; log.error(msg); throw new IllegalArgumentException(msg); } @@ -935,7 +941,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { throw new UnregisteredCartridgeException(msg); } - dataHolder.addClusterContext(new ClusterContext(clusterId, cartridgeType, payload)); + dataHolder.addClusterContext(new ClusterContext(clusterId, cartridgeType, payload, hostName)); TopologyBuilder.handleClusterCreated(registrant); return true; http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/3ba57aac/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java index 558a382..6533efb 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java @@ -48,7 +48,8 @@ public class FasterLookUpDataHolder implements Serializable{ */ private Map<String, List<MemberContext>> clusterIdToMemberContext = new HashMap<String, List<MemberContext>>(); - /** + + /** * Key - member id * Value - {@link MemberContext} */ @@ -426,7 +427,9 @@ public class FasterLookUpDataHolder implements Serializable{ public void removeMemberContext(String clusterId) { List<MemberContext> ctxts = clusterIdToMemberContext.remove(clusterId); - + if(ctxts == null) { + return; + } for (MemberContext memberContext : ctxts) { String memberId = memberContext.getMemberId(); memberIdToContext.remove(memberId); @@ -441,6 +444,13 @@ public class FasterLookUpDataHolder implements Serializable{ return clusterIdToMemberContext.get(clusterId); } + public Map<String, List<MemberContext>> getClusterIdToMemberContext() { + return clusterIdToMemberContext; + } + + public void setClusterIdToMemberContext(Map<String, List<MemberContext>> clusterIdToMemberContext) { + this.clusterIdToMemberContext = clusterIdToMemberContext; + } // public void addNodeId(String memberId, String nodeId) { // memberIdToNodeId.put(memberId, nodeId); // }
