Repository: incubator-stratos Updated Branches: refs/heads/master 3d3fc9d31 -> 783197eab
Fixed issue of complete topology and tenant events being processed in each iteration Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/783197ea Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/783197ea Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/783197ea Branch: refs/heads/master Commit: 783197eaba9edd70212ca70b39679502274fd230 Parents: 3d3fc9d Author: Imesh Gunaratne <[email protected]> Authored: Fri May 2 18:40:00 2014 +0530 Committer: Imesh Gunaratne <[email protected]> Committed: Fri May 2 18:40:00 2014 +0530 ---------------------------------------------------------------------- .../LoadBalancerTenantEventReceiver.java | 35 +++++++++++--------- .../LoadBalancerTopologyEventReceiver.java | 31 +++++++++-------- 2 files changed, 38 insertions(+), 28 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/783197ea/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/LoadBalancerTenantEventReceiver.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/LoadBalancerTenantEventReceiver.java b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/LoadBalancerTenantEventReceiver.java index 52886d1..e25bed9 100644 --- a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/LoadBalancerTenantEventReceiver.java +++ b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/LoadBalancerTenantEventReceiver.java @@ -50,26 +50,31 @@ public class LoadBalancerTenantEventReceiver implements Runnable { private void addEventListeners() { tenantEventReceiver.addEventListener(new CompleteTenantEventListener() { + private boolean initialized; + @Override protected void onEvent(Event event) { - CompleteTenantEvent completeTenantEvent = (CompleteTenantEvent) event; - if (log.isDebugEnabled()) { - log.debug("Complete tenant event received"); - } - for (Tenant tenant : completeTenantEvent.getTenants()) { - for (Subscription subscription : tenant.getSubscriptions()) { - if (isMultiTenantService(subscription.getServiceName())) { - LoadBalancerContextUtil.addClustersAgainstHostNamesAndTenantIds( + if (!initialized) { + CompleteTenantEvent completeTenantEvent = (CompleteTenantEvent) event; + if (log.isDebugEnabled()) { + log.debug("Complete tenant event received"); + } + for (Tenant tenant : completeTenantEvent.getTenants()) { + for (Subscription subscription : tenant.getSubscriptions()) { + if (isMultiTenantService(subscription.getServiceName())) { + LoadBalancerContextUtil.addClustersAgainstHostNamesAndTenantIds( + subscription.getServiceName(), + tenant.getTenantId(), + subscription.getClusterIds()); + } + + LoadBalancerContextUtil.addClustersAgainstDomains( subscription.getServiceName(), - tenant.getTenantId(), - subscription.getClusterIds()); + subscription.getClusterIds(), + subscription.getDomains()); } - - LoadBalancerContextUtil.addClustersAgainstDomains( - subscription.getServiceName(), - subscription.getClusterIds(), - subscription.getDomains()); } + initialized = true; } } }); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/783197ea/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/LoadBalancerTopologyEventReceiver.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/LoadBalancerTopologyEventReceiver.java b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/LoadBalancerTopologyEventReceiver.java index 0796945..f10256c 100644 --- a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/LoadBalancerTopologyEventReceiver.java +++ b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/LoadBalancerTopologyEventReceiver.java @@ -77,25 +77,30 @@ public class LoadBalancerTopologyEventReceiver implements Runnable { private void addEventListeners() { // Listen to topology events that affect clusters topologyEventReceiver.addEventListener(new CompleteTopologyEventListener() { + private boolean initialized; + @Override protected void onEvent(Event event) { - try { - TopologyManager.acquireReadLock(); - for (Service service : TopologyManager.getTopology().getServices()) { - for (Cluster cluster : service.getClusters()) { - if (clusterHasActiveMembers(cluster)) { - LoadBalancerContextUtil.addClusterAgainstHostNames(cluster); - } else { - if (log.isDebugEnabled()) { - log.debug("Cluster does not have any active members"); + if(!initialized) { + try { + TopologyManager.acquireReadLock(); + for (Service service : TopologyManager.getTopology().getServices()) { + for (Cluster cluster : service.getClusters()) { + if (clusterHasActiveMembers(cluster)) { + LoadBalancerContextUtil.addClusterAgainstHostNames(cluster); + } else { + if (log.isDebugEnabled()) { + log.debug("Cluster does not have any active members"); + } } } } + initialized = true; + } catch (Exception e) { + log.error("Error processing event", e); + } finally { + TopologyManager.releaseReadLock(); } - } catch (Exception e) { - log.error("Error processing event", e); - } finally { - TopologyManager.releaseReadLock(); } }
