From 308522077028f3bc2e178aaaf9b9c5cddf57aedf Mon Sep 17 00:00:00 2001 From: anthony Date: Wed, 2 Feb 2011 17:52:28 -0800 Subject: [PATCH] merge from master, fix concurrent exception --- .../xen/resource/CitrixResourceBase.java | 38 +++++++++---------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index ac68a47ff64..8e7e61de626 100644 --- a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -4047,29 +4047,25 @@ public abstract class CitrixResourceBase implements StoragePoolResource, ServerR s_logger.warn(msg); return false; } - if (srRec.shared) { - Set hosts = Host.getAll(conn); - - for (Host host : hosts) { - boolean found = false; - for (PBD pbd : pbds) { - if (host.equals(pbd.getHost(conn))) { - PBD.Record pbdr = pbd.getRecord(conn); - if (!pbdr.currentlyAttached) { - pbdPlug(conn, pbd); - } - pbds.remove(pbd); - found = true; - break; + if (srRec.shared) { + Host host = Host.getByUuid(conn, _host.uuid); + boolean found = false; + for (PBD pbd : pbds) { + PBD.Record pbdr = pbd.getRecord(conn); + if (host.equals(pbdr.host)) { + if (!pbdr.currentlyAttached) { + pbdPlug(conn, pbd); } + found = true; + break; } - if (!found) { - PBD.Record pbdr = srRec.PBDs.iterator().next().getRecord(conn); - pbdr.host = host; - pbdr.uuid = ""; - PBD pbd = PBD.create(conn, pbdr); - pbdPlug(conn, pbd); - } + } + if (!found) { + PBD.Record pbdr = srRec.PBDs.iterator().next().getRecord(conn); + pbdr.host = host; + pbdr.uuid = ""; + PBD pbd = PBD.create(conn, pbdr); + pbdPlug(conn, pbd); } } else { for (PBD pbd : pbds) {