You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by re...@apache.org on 2014/11/04 10:37:51 UTC
git commit: code reactoring
Repository: stratos
Updated Branches:
refs/heads/docker-grouping-merge c59b3911d -> 13245dcc2
code reactoring
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/13245dcc
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/13245dcc
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/13245dcc
Branch: refs/heads/docker-grouping-merge
Commit: 13245dcc294923c036731c26e0ba22a35f36278a
Parents: c59b391
Author: reka <rt...@gmail.com>
Authored: Tue Nov 4 15:06:29 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Tue Nov 4 15:06:40 2014 +0530
----------------------------------------------------------------------
.../applications/topic/ApplicationBuilder.java | 511 +++++--------------
.../AutoscalerTopologyEventReceiver.java | 66 +--
2 files changed, 128 insertions(+), 449 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/13245dcc/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 ed7e643..d5fc50c 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
@@ -40,117 +40,6 @@ import java.util.Set;
public class ApplicationBuilder {
private static final Log log = LogFactory.getLog(ApplicationBuilder.class);
-
- /*public static synchronized void handleApplicationDeployed(Application application,
- Set<ApplicationClusterContext> applicationClusterContexts,
- Set<MetaDataHolder> metaDataHolders) {
-
-
- Applications applications = Appcation.getApplications();
- try {
- ApplicationHolder.acquireWriteLock();
-
- if (applications.applicationExists(application.getUniqueIdentifier())) {
- log.warn("Application with id [ " + application.getUniqueIdentifier() + " ] already exists in Applications");
- return;
- }
- List<Cluster> clusters = new ArrayList<Cluster>();
- for (ApplicationClusterContext applicationClusterContext : applicationClusterContexts) {
- Cluster cluster = new Cluster(applicationClusterContext.getCartridgeType(),
- applicationClusterContext.getClusterId(), applicationClusterContext.getDeploymentPolicyName(),
- applicationClusterContext.getAutoscalePolicyName(), application.getUniqueIdentifier());
- //cluster.setStatus(Status.Created);
- cluster.addHostName(applicationClusterContext.getHostName());
- cluster.setTenantRange(applicationClusterContext.getTenantRange());
- clusters.add(cluster);
-
- Service service = applications.getService(applicationClusterContext.getCartridgeType());
- if (service != null) {
- service.addCluster(cluster);
- log.info("Added Cluster " + cluster.toString() + " to Applications for Application with id: " + application.getUniqueIdentifier());
- } else {
- log.error("Service " + applicationClusterContext.getCartridgeType() + " not found");
- return;
- }
- }
-
- // add to Applications and update
- applications.addApplication(application);
- ApplicationHolder.persistApplication(applications);
-
- log.info("Application with id [ " + application.getUniqueIdentifier() + " ] added to Applications successfully");
- org.apache.stratos.messaging.event.applications.ApplicationCreatedEvent applicationCreatedEvent = new org.apache.stratos.messaging.event.applications.ApplicationCreatedEvent(application, clusters);
- ApplicationsEventPublisher.sendApplicationCreatedEvent(applicationCreatedEvent);
-
- } finally {
- ApplicationHolder.releaseWriteLock();
- }
- }*/
-
- /*public static synchronized void handleApplicationUndeployed(String applicationId) {
-
- Set<ClusterDataHolder> clusterData;
-
- // update the Application and Cluster Statuses as 'Terminating'
- ApplicationHolder.acquireWriteLock();
-
- try {
-
- Applications applications = ApplicationHolder.getApplications();
-
- if (!applications.applicationExists(applicationId)) {
- log.warn("Application with id [ " + applicationId + " ] doesn't exist in Applications");
- return;
- }
-
- Application application = applications.getApplication(applicationId);
- // check and update application status to 'Terminating'
- if (!application.isStateTransitionValid(ApplicationStatus.Terminating)) {
- log.error("Invalid state transfer from " + application.getStatus() + " to " + ApplicationStatus.Terminating);
- }
- // for now anyway update the status forcefully
- application.setStatus(ApplicationStatus.Terminating);
-
- // update all the Clusters' statuses to 'Terminating'
- clusterData = application.getClusterDataRecursively();
- for (ClusterDataHolder clusterDataHolder : clusterData) {
- Service service = applications.getService(clusterDataHolder.getServiceType());
- if (service != null) {
- Cluster aCluster = service.getCluster(clusterDataHolder.getClusterId());
- if (aCluster != null) {
- // validate state transition
- if (!aCluster.isStateTransitionValid(ClusterStatus.Terminating)) {
- log.error("Invalid state transfer from " + aCluster.getStatus() + " to "
- + ClusterStatus.Terminating);
- }
- // for now anyway update the status forcefully
- aCluster.setStatus(ClusterStatus.Terminating);
-
- } else {
- log.warn("Unable to find Cluster with cluster id " + clusterDataHolder.getClusterId() +
- " in Applications");
- }
-
- } else {
- log.warn("Unable to remove cluster with cluster id: " + clusterDataHolder.getClusterId() + " from Applications, " +
- " associated Service [ " + clusterDataHolder.getServiceType() + " ] not found");
- }
- }
-
- // update all Group's statuses to 'Terminating'
- if (application.getGroups() != null) {
- updateGroupStatusesRecursively(GroupStatus.Terminating, application.getGroups());
- }
-
- ApplicationHolder.persistApplication(applications);
-
- } finally {
- ApplicationHolder.releaseWriteLock();
- }
-
- ApplicationsEventPublisher.sendApplicationUndeployedEvent(applicationId, clusterData);
- }*/
-
public static synchronized void handleCompleteApplication(Applications applications) {
if (log.isDebugEnabled()) {
log.debug("Handling complete application");
@@ -166,69 +55,156 @@ public class ApplicationBuilder {
public static synchronized void handleApplicationCreated(Application application,
Set<ApplicationClusterContext> appClusterContexts) {
+ if (log.isInfoEnabled()) {
+ log.info("Handling Application creation for the [application]: " +
+ application.getUniqueIdentifier());
+ }
ApplicationHolder.acquireWriteLock();
-
- Applications applications = ApplicationHolder.getApplications();
-
try {
+ Applications applications = ApplicationHolder.getApplications();
if (applications.getApplication(application.getUniqueIdentifier()) != null) {
CloudControllerClient.getInstance().createApplicationClusters(application.getUniqueIdentifier(),
appClusterContexts);
ApplicationHolder.persistApplication(application);
- // startApplicationMonitor(application.getUniqueIdentifier());
CloudControllerClient.getInstance().createApplicationClusters(application.getUniqueIdentifier(),
appClusterContexts);
} else {
log.warn("Application [ " + application.getUniqueIdentifier() + " ] already exists in Applications");
}
+ } finally {
+ ApplicationHolder.releaseWriteLock();
+ }
+ ApplicationsEventPublisher.sendApplicationCreatedEvent(application);
+ }
+
+ public static void handleApplicationActivatedEvent(String appId) {
+ if (log.isInfoEnabled()) {
+ log.info("Handling Application activation for the [application]: " + appId);
+ }
+
+ Applications applications = ApplicationHolder.getApplications();
+ Application application = applications.getApplication(appId);
+ //update the status of the Group
+ if (application == null) {
+ log.warn(String.format("Application %s does not exist",
+ appId));
+ return;
+ }
+ try {
+ ApplicationHolder.acquireWriteLock();
+ ApplicationStatus status = ApplicationStatus.Active;
+ if (application.isStateTransitionValid(status)) {
+ application.setStatus(status);
+ updateApplicationMonitor(appId, status);
+ log.info("Application activated adding status started for Applications");
+ ApplicationHolder.persistApplication(application);
+ //publishing data
+ ApplicationsEventPublisher.sendApplicationActivatedEvent(appId);
+ }
} finally {
ApplicationHolder.releaseWriteLock();
}
- ApplicationsEventPublisher.sendApplicationCreatedEvent(application);
}
public static void handleApplicationUndeployed(String applicationId) {
- log.info("Un-deploying the [application] " + applicationId + "by marking it as terminating..");
+ if (log.isInfoEnabled()) {
+ log.info("Un-deploying the [application] " + applicationId + "by marking it as terminating..");
+ }
ApplicationHolder.acquireReadLock();
try {
ApplicationMonitor appMonitor = AutoscalerContext.getInstance().
getAppMonitor(applicationId);
-
if (appMonitor != null) {
// update the status as Terminating
+ log.info("Application" + applicationId + " updated as terminating" );
appMonitor.setStatus(ApplicationStatus.Terminating);
-
} else {
log.warn("Application Monitor cannot be found for the undeployed [application] "
+ applicationId);
}
-
} finally {
ApplicationHolder.releaseReadLock();
}
- /*Set<ClusterDataHolder> clusterData = null;
+ ApplicationsEventPublisher.sendApplicationTerminatingEvent(applicationId);
+ }
+
+ public static void handleApplicationTerminatedEvent(String appId) {
+ if (log.isInfoEnabled()) {
+ log.info("Handling Application termination for the [application]: " + appId);
+ }
- try {
- if (applicationToRemove != null) {
- clusterData = applicationToRemove.getClusterDataRecursively();
- ApplicationHolder.removeApplication(applicationId);
+ Applications applications = ApplicationHolder.getApplications();
+ try {
+ ApplicationHolder.acquireWriteLock();
+
+ if (!applications.applicationExists(appId)) {
+ log.warn("Application with id [ " + appId + " ] doesn't exist in Applications");
} else {
- log.warn("Application [ " + applicationId + " ] not found among existing Applications");
+ Application application = applications.getApplication(appId);
+
+ if (!application.isStateTransitionValid(ApplicationStatus.Terminated)) {
+ log.error("Invalid status change from " + application.getStatus() + " to " + ApplicationStatus.Terminated);
+ }
+ // forcefully set status for now
+ application.setStatus(ApplicationStatus.Terminated);
+ updateApplicationMonitor(appId, ApplicationStatus.Terminated);
+ //removing the monitor
+ AutoscalerContext.getInstance().removeAppMonitor(appId);
+ //Removing the application from memory and registry
+ ApplicationHolder.removeApplication(appId);
+ log.info("[Application] " + appId + " is removed");
+ ApplicationsEventPublisher.sendApplicationTerminatedEvent(appId);
}
} finally {
ApplicationHolder.releaseWriteLock();
- }*/
+ }
+ }
+
+ public static void handleApplicationTerminatingEvent(String applicationId) {
+ if (log.isInfoEnabled()) {
+ log.info("Handling Application terminating for the [application]: " + applicationId);
+ }
+
+ ApplicationHolder.acquireWriteLock();
+
+ try {
+ Applications applications = ApplicationHolder.getApplications();
+ if (!applications.applicationExists(applicationId)) {
+ log.warn("Application with id [ " + applicationId + " ] doesn't exist in Applications");
+ return;
+ }
+
+ Application application = applications.getApplication(applicationId);
+ // check and update application status to 'Terminating'
+ ApplicationStatus status = ApplicationStatus.Terminating;
+ if (!application.isStateTransitionValid(status)) {
+ log.error("Invalid state transfer from " + application.getStatus() + " to " +
+ ApplicationStatus.Terminating);
+ }
+ // for now anyway update the status forcefully
+ application.setStatus(status);
+ log.info("Application " + applicationId + "'s status updated to " +
+ ApplicationStatus.Terminating);
+ updateApplicationMonitor(applicationId, status);
+ ApplicationsEventPublisher.sendApplicationTerminatingEvent(applicationId);
+ } finally {
+ ApplicationHolder.releaseWriteLock();
+ }
- ApplicationsEventPublisher.sendApplicationTerminatingEvent(applicationId);
}
public static void handleGroupTerminatedEvent(String appId, String groupId) {
+ if (log.isInfoEnabled()) {
+ log.info("Handling Group termination for the [group]: " + groupId +
+ " in the [application] " + appId);
+ }
+
Applications applications = ApplicationHolder.getApplications();
Application application = applications.getApplication(appId);
//update the status of the Group
@@ -265,6 +241,11 @@ public class ApplicationBuilder {
}
public static void handleGroupActivatedEvent(String appId, String groupId) {
+ if (log.isInfoEnabled()) {
+ log.info("Handling Group activation for the [group]: " + groupId +
+ " in the [application] " + appId);
+ }
+
Applications applications = ApplicationHolder.getApplications();
Application application = applications.getApplication(appId);
//update the status of the Group
@@ -301,6 +282,11 @@ public class ApplicationBuilder {
}
public static void handleGroupCreatedEvent(String appId, String groupId) {
+ if (log.isInfoEnabled()) {
+ log.info("Handling Group creation for the [group]: " + groupId +
+ " in the [application] " + appId);
+ }
+
Applications applications = ApplicationHolder.getApplications();
Application application = applications.getApplication(appId);
//update the status of the Group
@@ -338,6 +324,11 @@ public class ApplicationBuilder {
}
public static void handleGroupInActivateEvent(String appId, String groupId) {
+ if (log.isInfoEnabled()) {
+ log.info("Handling Group in-active for the [group]: " + groupId +
+ " in the [application] " + appId);
+ }
+
Applications applications = ApplicationHolder.getApplications();
Application application = applications.getApplication(appId);
//update the status of the Group
@@ -374,6 +365,11 @@ public class ApplicationBuilder {
}
public static void handleGroupTerminatingEvent(String appId, String groupId) {
+ if (log.isInfoEnabled()) {
+ log.info("Handling Group terminating for the [group]: " + groupId +
+ " in the [application] " + appId);
+ }
+
Applications applications = ApplicationHolder.getApplications();
Application application = applications.getApplication(appId);
//update the status of the Group
@@ -409,99 +405,6 @@ public class ApplicationBuilder {
}
}
- public static void handleApplicationActivatedEvent(String appId) {
- Applications applications = ApplicationHolder.getApplications();
- Application application = applications.getApplication(appId);
- //update the status of the Group
- if (application == null) {
- log.warn(String.format("Application %s does not exist",
- appId));
- return;
- }
-
- try {
- ApplicationHolder.acquireWriteLock();
- ApplicationStatus status = ApplicationStatus.Active;
- if (application.isStateTransitionValid(status)) {
- application.setStatus(status);
- updateApplicationMonitor(appId, status);
- log.info("Application activated adding status started for Applications");
- ApplicationHolder.persistApplication(application);
- //publishing data
- ApplicationsEventPublisher.sendApplicationActivatedEvent(appId);
- }
- } finally {
- ApplicationHolder.releaseWriteLock();
- }
-
- }
-
- /*public static void handleApplicationCreatedEvent(ApplicationCreatedEvent event) {
- Applications applications = ApplicationHolder.getApplications();
- Application application = applications.getApplication(event.getAppId());
- //update the status of the Group
- if (application == null) {
- log.warn(String.format("Application %s does not exist",
- event.getAppId()));
- return;
- }
- List<Cluster> clusters = new ArrayList<Cluster>();
- Set<ClusterDataHolder> allClusters = application.getClusterDataRecursively();
-
- for (ClusterDataHolder clusterDataHolder : allClusters) {
- String clusterId = clusterDataHolder.getClusterId();
- String serviceName = clusterDataHolder.getServiceType();
- clusters.add(ApplicationHolder.getApplications().getService(serviceName).getCluster(clusterId));
- }
- org.apache.stratos.messaging.event.applications.ApplicationCreatedEvent applicationActivatedEvent =
- new org.apache.stratos.messaging.event.applications.ApplicationCreatedEvent(
- application, clusters);
- try {
- ApplicationHolder.acquireWriteLock();
- application.setStatus(ApplicationStatus.Created);
- log.info("Application created adding status started for Applications");
-
- ApplicationHolder.persistApplication(applications);
- } finally {
- ApplicationHolder.releaseWriteLock();
- }
- //publishing data
- ApplicationsEventPublisher.sendApplicationCreatedEvent(applicationActivatedEvent);
- }*/
-
- public static void handleApplicationTerminatingEvent(String appId) {
-
- String applicationId = appId;
-
- // update the Application Status as 'Terminating'
- ApplicationHolder.acquireWriteLock();
-
- try {
-
- Applications applications = ApplicationHolder.getApplications();
-
- if (!applications.applicationExists(applicationId)) {
- log.warn("Application with id [ " + applicationId + " ] doesn't exist in Applications");
- return;
- }
-
- Application application = applications.getApplication(applicationId);
- // check and update application status to 'Terminating'
- ApplicationStatus status = ApplicationStatus.Terminating;
- if (!application.isStateTransitionValid(status)) {
- log.error("Invalid state transfer from " + application.getStatus() + " to " + ApplicationStatus.Terminating);
- }
- // for now anyway update the status forcefully
- application.setStatus(status);
- log.info("Application " + applicationId + "'s status updated to " + ApplicationStatus.Terminating);
- updateApplicationMonitor(appId, status);
- ApplicationsEventPublisher.sendApplicationTerminatingEvent(applicationId);
- } finally {
- ApplicationHolder.releaseWriteLock();
- }
-
- }
-
private static void updateGroupStatusesRecursively(GroupStatus groupStatus, Collection<Group> groups) {
for (Group group : groups) {
@@ -518,174 +421,13 @@ public class ApplicationBuilder {
}
}
- public static void handleApplicationTerminatedEvent(String appId) {
-
- Applications applications = ApplicationHolder.getApplications();
-
- try {
- ApplicationHolder.acquireWriteLock();
-
- if (!applications.applicationExists(appId)) {
- log.warn("Application with id [ " + appId + " ] doesn't exist in Applications");
- } else {
- Application application = applications.getApplication(appId);
-
- if (!application.isStateTransitionValid(ApplicationStatus.Terminated)) {
- log.error("Invalid status change from " + application.getStatus() + " to " + ApplicationStatus.Terminated);
- }
- // forcefully set status for now
- application.setStatus(ApplicationStatus.Terminated);
- updateApplicationMonitor(appId, ApplicationStatus.Terminated);
- //removing the monitor
- AutoscalerContext.getInstance().removeAppMonitor(appId);
- //Removing the application from memory and registry
- ApplicationHolder.removeApplication(appId);
- ApplicationsEventPublisher.sendApplicationTerminatedEvent(appId);
- }
-
- } finally {
- ApplicationHolder.releaseWriteLock();
- }
- }
-
-
- protected static synchronized void startApplicationMonitor(String appId) {
-
- ApplicationMonitor applicationMonitor = null;
- int retries = 5;
- boolean success = false;
- do {
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e1) {
- }
- try {
- long start = System.currentTimeMillis();
- if (log.isDebugEnabled()) {
- log.debug("application monitor is going to be started for [application] " +
- appId);
- }
- applicationMonitor = ApplicationMonitorFactory.getApplicationMonitor(appId);
-
- long end = System.currentTimeMillis();
- log.info("Time taken to start app monitor: " + (end - start) / 1000);
- success = true;
- } catch (DependencyBuilderException e) {
- String msg = "Application monitor creation failed for Application: ";
- log.warn(msg, e);
- retries--;
- } catch (TopologyInConsistentException e) {
- String msg = "Application monitor creation failed for Application: ";
- log.warn(msg, e);
- retries--;
- }
- } while (!success && retries != 0);
-
- if (applicationMonitor == null) {
- String msg = "Application monitor creation failed, even after retrying for 5 times, "
- + "for Application: " + appId;
- log.error(msg);
- throw new RuntimeException(msg);
- }
-
- AutoscalerContext.getInstance().addAppMonitor(applicationMonitor);
-
- if (log.isInfoEnabled()) {
- log.info(String.format("Application monitor has been added successfully: " +
- "[application] %s", applicationMonitor.getId()));
- }
- }
-
-
- /*Thread th = null;
- if (!AutoscalerContext.getInstance()
- .appMonitorExist(applicationId)) {
- th = new Thread(
- new ApplicationMonitorAdder(applicationId));
- }
-
- if (th != null) {
- th.start();
- // try {
- // th.join();
- // } catch (InterruptedException ignore) {
-
- if (log.isDebugEnabled()) {
- log.debug(String
- .format("Application monitor thread has been started successfully: " +
- "[application] %s ", applicationId));
- }
- } else {
- if (log.isDebugEnabled()) {
- log.debug(String
- .format("Application monitor thread already exists: " +
- "[application] %s ", applicationId));
- }
- }*/
-
-
- private class ApplicationMonitorAdder implements Runnable {
- private String appId;
-
- public ApplicationMonitorAdder(String appId) {
- this.appId = appId;
- }
-
- public void run() {
- ApplicationMonitor applicationMonitor = null;
- int retries = 5;
- boolean success = false;
- do {
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e1) {
- }
- try {
- long start = System.currentTimeMillis();
- if (log.isDebugEnabled()) {
- log.debug("application monitor is going to be started for [application] " +
- appId);
- }
- applicationMonitor = ApplicationMonitorFactory.getApplicationMonitor(appId);
-
- long end = System.currentTimeMillis();
- log.info("Time taken to start app monitor: " + (end - start) / 1000);
- success = true;
- } catch (DependencyBuilderException e) {
- String msg = "Application monitor creation failed for Application: ";
- log.warn(msg, e);
- retries--;
- } catch (TopologyInConsistentException e) {
- String msg = "Application monitor creation failed for Application: ";
- log.warn(msg, e);
- retries--;
- }
- } while (!success && retries != 0);
-
- if (applicationMonitor == null) {
- String msg = "Application monitor creation failed, even after retrying for 5 times, "
- + "for Application: " + appId;
- log.error(msg);
- throw new RuntimeException(msg);
- }
-
- AutoscalerContext.getInstance().addAppMonitor(applicationMonitor);
-
- if (log.isInfoEnabled()) {
- log.info(String.format("Application monitor has been added successfully: " +
- "[application] %s", applicationMonitor.getId()));
- }
- }
- }
-
-
private static void updateApplicationMonitor(String appId, ApplicationStatus status) {
//Updating the Application Monitor
ApplicationMonitor applicationMonitor = AutoscalerContext.getInstance().getAppMonitor(appId);
if (applicationMonitor != null) {
applicationMonitor.setStatus(status);
} else {
- //TODO
+ log.warn("Application monitor cannot be found for the [application] " + appId);
}
}
@@ -698,7 +440,8 @@ public class ApplicationBuilder {
if (monitor != null) {
monitor.setStatus(status);
} else {
- //TODO
+ log.warn("Group monitor cannot be found for the [group] " + groupId + " for the " +
+ "[application] " + appId);
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/13245dcc/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
index c22f3b8..df5b6a2 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
@@ -322,71 +322,7 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
}
}
});
-//TODO delete this if we don't want this
-// topologyEventReceiver.addEventListener(new ClusterRemovedEventListener() {
-// @Override
-// protected void onEvent(Event event) {
-//
-// ClusterRemovedEvent clusterRemovedEvent = null;
-// try {
-// clusterRemovedEvent = (ClusterRemovedEvent) event;
-// //TopologyManager.acquireReadLock();
-// TopologyManager.acquireReadLockForCluster(clusterRemovedEvent.getServiceName(),
-// clusterRemovedEvent.getClusterId());
-//
-// String clusterId = clusterRemovedEvent.getClusterId();
-// String deploymentPolicy = clusterRemovedEvent.getDeploymentPolicy();
-//
-// AbstractClusterMonitor monitor;
-//
-// if (clusterRemovedEvent.isLbCluster()) {
-// DeploymentPolicy depPolicy = PolicyManager.getInstance().
-// getDeploymentPolicy(deploymentPolicy);
-// if (depPolicy != null) {
-// List<NetworkPartitionLbHolder> lbHolders = PartitionManager.getInstance()
-// .getNetworkPartitionLbHolders(depPolicy);
-//
-// for (NetworkPartitionLbHolder networkPartitionLbHolder : lbHolders) {
-// // removes lb cluster ids
-// boolean isRemoved = networkPartitionLbHolder.removeLbClusterId(clusterId);
-// if (isRemoved) {
-// log.info("Removed the lb cluster [id]:"
-// + clusterId
-// + " reference from Network Partition [id]: "
-// + networkPartitionLbHolder
-// .getNetworkPartitionId());
-//
-// }
-// if (log.isDebugEnabled()) {
-// log.debug(networkPartitionLbHolder);
-// }
-//
-// }
-// }
-// monitor = AutoscalerContext.getInstance()
-// .removeLbMonitor(clusterId);
-//
-// } else {
-// monitor = (AbstractClusterMonitor) AutoscalerContext.getInstance()
-// .removeMonitor(clusterId);
-// }
-//
-// // runTerminateAllRule(monitor);
-// if (monitor != null) {
-// monitor.destroy();
-// log.info(String.format("Cluster monitor has been removed successfully: [cluster] %s ",
-// clusterId));
-// }
-// } catch (Exception e) {
-// log.error("Error processing event", e);
-// } finally {
-// //TopologyManager.releaseReadLock();
-// TopologyManager.releaseReadLockForCluster(clusterRemovedEvent.getServiceName(),
-// clusterRemovedEvent.getClusterId());
-// }
-// }
-//
-// });
+
topologyEventReceiver.addEventListener(new MemberStartedEventListener() {
@Override