From dce0ab6190956e765fedfd7e53b305fa20f2c964 Mon Sep 17 00:00:00 2001 From: anthony Date: Fri, 21 Jan 2011 11:23:51 -0800 Subject: [PATCH] fixed ConcurrentModificationException --- .../hypervisor/xen/resource/CitrixResourceBase.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index dc32f46c8c6..99f2c6c79c1 100644 --- a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -740,7 +740,9 @@ public abstract class CitrixResourceBase implements ServerResource { if (vmSpec.getBootloader() == BootloaderType.CD) { vm.setPVBootloader(conn, "eliloader"); Map otherConfig = vm.getOtherConfig(conn); - otherConfig.put( "install-repository", "cdrom"); + if ( ! vm.getOtherConfig(conn).containsKey("install-repository") ) { + otherConfig.put( "install-repository", "cdrom"); + } vm.setOtherConfig(conn, otherConfig); } else if (vmSpec.getBootloader() == BootloaderType.PyGrub ){ vm.setPVBootloader(conn, "pygrub"); @@ -2655,7 +2657,9 @@ public abstract class CitrixResourceBase implements ServerResource { try { Set vms = VM.getByNameLabel(conn, vmName); // stop vm which is running on this host or is in halted state - for (VM vm : vms) { + Iterator iter = vms.iterator(); + while ( iter.hasNext() ) { + VM vm = iter.next(); VM.Record vmr = vm.getRecord(conn); if (vmr.powerState != VmPowerState.RUNNING) { continue; @@ -2666,7 +2670,7 @@ public abstract class CitrixResourceBase implements ServerResource { if (vmr.residentOn.getUuid(conn).equals(_host.uuid)) { continue; } - vms.remove(vm); + iter.remove(); } if (vms.size() == 0) {