Updated Branches:
  refs/heads/master 0a9b9f794 -> 5af702dd9

CLOUDSTACK-2737: findHostsForMigration is resulting in an exception when there 
are no suitable tagged storage pools. Instead of a foreach made changes to use 
a iterator in the loop to avoid ConcurrentModificationException as the host 
list is being updated inside the loop.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/5af702dd
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/5af702dd
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/5af702dd

Branch: refs/heads/master
Commit: 5af702dd907eedd91020af2ee32d55cb3f017d1a
Parents: 0a9b9f7
Author: Devdeep Singh <[email protected]>
Authored: Wed Jun 5 17:41:01 2013 +0530
Committer: Devdeep Singh <[email protected]>
Committed: Wed Jun 5 17:41:01 2013 +0530

----------------------------------------------------------------------
 .../src/com/cloud/server/ManagementServerImpl.java |   15 ++++-----------
 1 files changed, 4 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5af702dd/server/src/com/cloud/server/ManagementServerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/server/ManagementServerImpl.java 
b/server/src/com/cloud/server/ManagementServerImpl.java
index cf50e61d..96c72e4 100755
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@ -30,6 +30,7 @@ import java.util.Comparator;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -373,15 +374,6 @@ import 
org.apache.cloudstack.api.command.user.vmsnapshot.DeleteVMSnapshotCmd;
 import org.apache.cloudstack.api.command.user.vmsnapshot.ListVMSnapshotCmd;
 import org.apache.cloudstack.api.command.user.vmsnapshot.RevertToVMSnapshotCmd;
 import org.apache.cloudstack.api.command.user.volume.*;
-import org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd;
-import org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd;
-import org.apache.cloudstack.api.command.user.volume.DeleteVolumeCmd;
-import org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd;
-import org.apache.cloudstack.api.command.user.volume.ExtractVolumeCmd;
-import org.apache.cloudstack.api.command.user.volume.ListVolumesCmd;
-import org.apache.cloudstack.api.command.user.volume.MigrateVolumeCmd;
-import org.apache.cloudstack.api.command.user.volume.ResizeVolumeCmd;
-import org.apache.cloudstack.api.command.user.volume.UploadVolumeCmd;
 import org.apache.cloudstack.api.command.user.vpc.CreateStaticRouteCmd;
 import org.apache.cloudstack.api.command.user.vpc.CreateVPCCmd;
 import org.apache.cloudstack.api.command.user.vpc.DeleteStaticRouteCmd;
@@ -1184,10 +1176,11 @@ public class ManagementServerImpl extends ManagerBase 
implements ManagementServe
             allHosts.remove(srcHost);
 
             // Check if the host has storage pools for all the volumes of the 
vm to be migrated.
-            for (Host host : allHosts) {
+            for (Iterator<HostVO> iterator = allHosts.iterator(); 
iterator.hasNext();) {
+                Host host = iterator.next();
                 Map<Volume, List<StoragePool>> volumePools = 
findSuitablePoolsForVolumes(vmProfile, host);
                 if (volumePools.isEmpty()) {
-                    allHosts.remove(host);
+                    iterator.remove();
                 } else {
                     if (!host.getClusterId().equals(srcHost.getClusterId()) || 
usesLocal) {
                         requiresStorageMotion.put(host, true);

Reply via email to