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 2013/12/18 12:30:05 UTC
git commit: Fixing NPE due to LB cluster monitor setter
Updated Branches:
refs/heads/master 0c012936e -> 314a58993
Fixing NPE due to LB cluster monitor setter
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/314a5899
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/314a5899
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/314a5899
Branch: refs/heads/master
Commit: 314a58993fa38c601fc358b255320c70bd00ca33
Parents: 0c01293
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Wed Dec 18 17:04:44 2013 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Wed Dec 18 17:04:44 2013 +0530
----------------------------------------------------------------------
.../stratos/autoscaler/AutoscalerContext.java | 4 ++
.../autoscaler/monitor/AbstractMonitor.java | 5 +-
.../topology/AutoscalerTopologyReceiver.java | 53 ++++++++++++++++----
3 files changed, 50 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/314a5899/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java
index b8111d7..5f59dcc 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java
@@ -63,6 +63,10 @@ public class AutoscalerContext {
log.info("Remove moniter clusterid" + clusterId);
return monitors.remove(clusterId);
}
+ public LbClusterMonitor removeLbMonitor(String clusterId) {
+ log.info("Remove moniter clusterid" + clusterId);
+ return lbMonitors.remove(clusterId);
+ }
public Map<String, ClusterMonitor> getMonitors() {
return monitors;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/314a5899/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractMonitor.java
index c02cc68..740db07 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractMonitor.java
@@ -40,5 +40,8 @@ import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
public abstract boolean memberExist(String memberId);
public abstract NetworkPartitionContext findNetworkPartition(String memberId);
-
+
+ public abstract NetworkPartitionContext getNetworkPartitionCtxt(String networkPartitionId);
+
+ public abstract void destroy();
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/314a5899/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/AutoscalerTopologyReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/AutoscalerTopologyReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/AutoscalerTopologyReceiver.java
index 9372fe0..b81a209 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/AutoscalerTopologyReceiver.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/AutoscalerTopologyReceiver.java
@@ -21,9 +21,13 @@ package org.apache.stratos.autoscaler.topology;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.*;
+import org.apache.stratos.autoscaler.AutoscalerContext;
+import org.apache.stratos.autoscaler.MemberStatsContext;
+import org.apache.stratos.autoscaler.NetworkPartitionContext;
+import org.apache.stratos.autoscaler.PartitionContext;
import org.apache.stratos.autoscaler.exception.PartitionValidationException;
import org.apache.stratos.autoscaler.exception.PolicyValidationException;
+import org.apache.stratos.autoscaler.monitor.AbstractMonitor;
import org.apache.stratos.autoscaler.monitor.ClusterMonitor;
import org.apache.stratos.autoscaler.monitor.LbClusterMonitor;
import org.apache.stratos.autoscaler.util.AutoscalerUtil;
@@ -132,8 +136,22 @@ public class AutoscalerTopologyReceiver implements Runnable {
try {
ClusterRemovedEvent e = (ClusterRemovedEvent) event;
TopologyManager.acquireReadLock();
-
- removeClusterFromContext(e.getClusterId());
+ String serviceName = e.getServiceName();
+ String clusterId = e.getClusterId();
+
+ AbstractMonitor monitor;
+
+ if(TopologyManager.getTopology().getService(serviceName).getCluster(clusterId).isLbCluster()){
+ monitor = AutoscalerContext.getInstance().removeLbMonitor(clusterId);
+
+ } else {
+ monitor = AutoscalerContext.getInstance().removeMonitor(clusterId);
+ }
+
+ monitor.destroy();
+ if(log.isDebugEnabled()) {
+ log.debug(String.format("Cluster monitor has been removed: [cluster] %s ", clusterId));
+ }
}
finally {
TopologyManager.releaseReadLock();
@@ -158,8 +176,19 @@ public class AutoscalerTopologyReceiver implements Runnable {
TopologyManager.acquireReadLock();
MemberTerminatedEvent e = (MemberTerminatedEvent) event;
String networkPartitionId = e.getNetworkPartitionId();
- NetworkPartitionContext networkPartitionContext = AutoscalerContext.getInstance().getMonitor(e.getClusterId())
- .getNetworkPartitionCtxt(networkPartitionId);
+ String clusterId = e.getClusterId();
+ AbstractMonitor monitor;
+
+ if(AutoscalerContext.getInstance().moniterExist(clusterId)){
+
+ monitor = AutoscalerContext.getInstance().getMonitor(clusterId);
+ } else {
+
+ //This is LB member
+ monitor = AutoscalerContext.getInstance().getLBMonitor(clusterId);
+ }
+
+ NetworkPartitionContext networkPartitionContext = monitor.getNetworkPartitionCtxt(networkPartitionId);
networkPartitionContext.getPartitionCtxt(e.getPartitionId())
.removeMemberStatsContext(e.getMemberId());
@@ -190,15 +219,17 @@ public class AutoscalerTopologyReceiver implements Runnable {
String partitionId = e.getPartitionId();
String networkPartitionId = e.getNetworkPartitionId();
+ String serviceName = e.getServiceName();
PartitionContext partitionContext;
String clusterId = e.getClusterId();
- ClusterMonitor monitor = AutoscalerContext.getInstance().getMonitor(clusterId);
+ AbstractMonitor monitor;
- if(monitor != null) {
+ if(AutoscalerContext.getInstance().moniterExist(clusterId)) {
+ monitor = AutoscalerContext.getInstance().getMonitor(clusterId);
partitionContext = monitor.getNetworkPartitionCtxt(networkPartitionId).getPartitionCtxt(partitionId);
} else {
- LbClusterMonitor lbMonitor = AutoscalerContext.getInstance().getLBMonitor(clusterId);
- partitionContext = lbMonitor.getNetworkPartitionCtxt(networkPartitionId).getPartitionCtxt(partitionId);
+ monitor = AutoscalerContext.getInstance().getLBMonitor(clusterId);
+ partitionContext = monitor.getNetworkPartitionCtxt(networkPartitionId).getPartitionCtxt(partitionId);
}
// ClusterContext clusCtx = monitor.getClusterCtxt();
// monitor.getNetworkPartitionCtxt(e.getId()).getPartitionCtxt(partitionId);
@@ -226,7 +257,7 @@ public class AutoscalerTopologyReceiver implements Runnable {
// ServiceRemovedEvent serviceRemovedEvent = (ServiceRemovedEvent)event;
// for(Service service : TopologyManager.getTopology().getServices()) {
// for(Cluster cluster : service.getClusters()) {
-// removeClusterFromContext(cluster.getHostName());
+// removeMonitor(cluster.getHostName());
// }
// }
// }
@@ -330,7 +361,7 @@ public class AutoscalerTopologyReceiver implements Runnable {
// }
// }
- private void removeClusterFromContext(String clusterId) {
+ private void removeMonitor(String clusterId) {
ClusterMonitor monitor = AutoscalerContext.getInstance().removeMonitor(clusterId);
// monitor.unsubscribe();
monitor.destroy();