Repository: stratos Updated Branches: refs/heads/master cab0d80fb -> fd7d1fb6a
Correct event publishing order when deploying an app: fixing STRATOS-1529 Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/fd7d1fb6 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/fd7d1fb6 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/fd7d1fb6 Branch: refs/heads/master Commit: fd7d1fb6ae479325d7994349c566500c7ea23d59 Parents: cab0d80 Author: Akila Perera <[email protected]> Authored: Mon Aug 24 23:46:18 2015 +0530 Committer: Akila Perera <[email protected]> Committed: Mon Aug 24 23:46:18 2015 +0530 ---------------------------------------------------------------------- .../autoscaler/applications/ApplicationHolder.java | 15 +++++++-------- .../applications/topic/ApplicationBuilder.java | 4 ++-- .../stratos/autoscaler/util/AutoscalerUtil.java | 10 ++++------ .../messaging/domain/application/Applications.java | 13 ++++++++----- .../stratos/messaging/domain/topology/Topology.java | 6 ------ 5 files changed, 21 insertions(+), 27 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/fd7d1fb6/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationHolder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationHolder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationHolder.java index 47c3a8b..2176bbc 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationHolder.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationHolder.java @@ -71,17 +71,16 @@ public class ApplicationHolder { if (applications == null) { synchronized (ApplicationHolder.class) { if (applications == null) { + // create a new Applications object for autoscaler + applications = new Applications(); + // retrieve from registry if (log.isDebugEnabled()) { - log.debug("Trying to retrieve applications from registry..."); + log.debug("Loading applications persisted in registry..."); } - applications = AutoscalerUtil.getApplications(); - if (applications == null) { - if (log.isDebugEnabled()) { - log.debug("No applications found in registry"); - } - // create a new Applications object - applications = new Applications(); + applications = AutoscalerUtil.loadApplicationsFromRegistry(applications); + if (applications.getApplications().isEmpty()) { + log.info("No applications found in registry."); } } } http://git-wip-us.apache.org/repos/asf/stratos/blob/fd7d1fb6/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java index 686e158..912a2f6 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java @@ -74,10 +74,10 @@ public class ApplicationBuilder { log.debug("Handling application creation event: [application-id] " + application.getUniqueIdentifier()); } - AutoscalerCloudControllerClient.getInstance().createApplicationClusters(application.getUniqueIdentifier(), - appClusterContexts); ApplicationHolder.persistApplication(application); ApplicationsEventPublisher.sendApplicationCreatedEvent(application); + AutoscalerCloudControllerClient.getInstance().createApplicationClusters(application.getUniqueIdentifier(), + appClusterContexts); } public static ApplicationInstance handleApplicationInstanceCreatedEvent(String appId, http://git-wip-us.apache.org/repos/asf/stratos/blob/fd7d1fb6/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java index 24a4e07..6c4dc19 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java @@ -80,19 +80,17 @@ public class AutoscalerUtil { return Holder.INSTANCE; } - public static Applications getApplications() { - - Applications applications; + public static Applications loadApplicationsFromRegistry(Applications applications) { + if (applications == null){ + throw new RuntimeException("Applications instance is null"); + } String[] appResourcePaths = RegistryManager.getInstance().getApplicationResourcePaths(); if (appResourcePaths != null) { - applications = new Applications(); for (String appResourcePath : appResourcePaths) { applications.addApplication(getApplicationFromPath(appResourcePath)); } - return applications; } - return null; } http://git-wip-us.apache.org/repos/asf/stratos/blob/fd7d1fb6/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Applications.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Applications.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Applications.java index 82ef5e2..4d366f1 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Applications.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Applications.java @@ -27,6 +27,9 @@ import java.io.Serializable; import java.util.HashMap; import java.util.Map; +/* + DO NOT make this a singleton + */ public class Applications implements Serializable { private static Log log = LogFactory.getLog(Applications.class); @@ -43,23 +46,23 @@ public class Applications implements Serializable { this.applicationMap.put(application.getUniqueIdentifier(), application); } - public Application getApplication(String appId) { + public synchronized Application getApplication(String appId) { return this.getApplications().get(appId); } - public boolean isInitialized() { + public synchronized boolean isInitialized() { return initialized; } - public void setInitialized(boolean initialized) { + public synchronized void setInitialized(boolean initialized) { this.initialized = initialized; } - public boolean applicationExists(String appId) { + public synchronized boolean applicationExists(String appId) { return this.getApplications().containsKey(appId); } - public Map<String, Application> getApplications() { + public synchronized Map<String, Application> getApplications() { return applicationMap; } http://git-wip-us.apache.org/repos/asf/stratos/blob/fd7d1fb6/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Topology.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Topology.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Topology.java index 2f929bf..9f641ec 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Topology.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Topology.java @@ -53,12 +53,6 @@ public class Topology implements Serializable { this.serviceMap.put(service.getServiceName(), service); } - public synchronized void addServices(Collection<Service> services) { - for (Service service : services) { - addService(service); - } - } - public void removeService(Service service) { this.serviceMap.remove(service.getServiceName()); TopologyLockHierarchy.getInstance().removeTopologyLockForService(service.getServiceName());
