Repository: incubator-stratos Updated Branches: refs/heads/master 1f615a1b0 -> 102c997df
Fixed concurrent modification error in CompleteTopologyMessageProcessor Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/1c9ad1ca Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/1c9ad1ca Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/1c9ad1ca Branch: refs/heads/master Commit: 1c9ad1cac1910d94abd10427e7ae66febe98ee7c Parents: d926386 Author: Imesh Gunaratne <[email protected]> Authored: Tue Mar 4 00:10:20 2014 -0500 Committer: Imesh Gunaratne <[email protected]> Committed: Tue Mar 4 00:10:20 2014 -0500 ---------------------------------------------------------------------- .../CompleteTopologyMessageProcessor.java | 27 ++++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/1c9ad1ca/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/CompleteTopologyMessageProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/CompleteTopologyMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/CompleteTopologyMessageProcessor.java index 2a8850a..3ca0370 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/CompleteTopologyMessageProcessor.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/CompleteTopologyMessageProcessor.java @@ -31,6 +31,9 @@ import org.apache.stratos.messaging.message.filter.topology.TopologyServiceFilte import org.apache.stratos.messaging.message.processor.MessageProcessor; import org.apache.stratos.messaging.util.Util; +import java.util.ArrayList; +import java.util.List; + public class CompleteTopologyMessageProcessor extends MessageProcessor { private static final Log log = LogFactory.getLog(CompleteTopologyMessageProcessor.class); @@ -74,12 +77,16 @@ public class CompleteTopologyMessageProcessor extends MessageProcessor { // Apply cluster filter if (TopologyClusterFilter.getInstance().isActive()) { for (Service service : topology.getServices()) { + List<Cluster> clustersToRemove = new ArrayList<Cluster>(); for (Cluster cluster : service.getClusters()) { if (TopologyClusterFilter.getInstance().clusterIdExcluded(cluster.getClusterId())) { - service.removeCluster(cluster.getClusterId()); - if (log.isDebugEnabled()) { - log.debug(String.format("Cluster is excluded: [cluster] %s", cluster.getClusterId())); - } + clustersToRemove.add(cluster); + } + } + for(Cluster cluster : clustersToRemove) { + service.removeCluster(cluster); + if (log.isDebugEnabled()) { + log.debug(String.format("Cluster is excluded: [cluster] %s", cluster.getClusterId())); } } } @@ -89,12 +96,16 @@ public class CompleteTopologyMessageProcessor extends MessageProcessor { if (TopologyMemberFilter.getInstance().isActive()) { for (Service service : topology.getServices()) { for (Cluster cluster : service.getClusters()) { + List<Member> membersToRemove = new ArrayList<Member>(); for(Member member : cluster.getMembers()) { if(TopologyMemberFilter.getInstance().lbClusterIdExcluded(member.getLbClusterId())) { - if (log.isDebugEnabled()) { - log.debug(String.format("Member is excluded: [member] %s [lb-cluster-id] %s", member.getMemberId(), member.getLbClusterId())); - } - cluster.removeMember(member); + membersToRemove.add(member); + } + } + for(Member member : membersToRemove) { + cluster.removeMember(member); + if (log.isDebugEnabled()) { + log.debug(String.format("Member is excluded: [member] %s [lb-cluster-id] %s", member.getMemberId(), member.getLbClusterId())); } } }
