diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/Xenserver625StorageProcessor.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/Xenserver625StorageProcessor.java index 02c3197e51b..e3c3beb01bb 100644 --- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/Xenserver625StorageProcessor.java +++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/Xenserver625StorageProcessor.java @@ -101,35 +101,24 @@ public class Xenserver625StorageProcessor extends XenServerStorageProcessor { try { final String srname = hypervisorResource.getHost().getUuid() + path.trim(); - - final Set srs = SR.getByNameLabel(conn, srname); - - if (srs != null && !srs.isEmpty()) { - return srs.iterator().next(); + synchronized (srname.intern()) { + final Set srs = SR.getByNameLabel(conn, srname); + if (srs != null && !srs.isEmpty()) { + return srs.iterator().next(); + } + final Map smConfig = new HashMap(); + final Host host = Host.getByUuid(conn, hypervisorResource.getHost().getUuid()); + final String uuid = UUID.randomUUID().toString(); + sr = SR.introduce(conn, uuid, srname, srname, "file", "file", false, smConfig); + final PBD.Record record = new PBD.Record(); + record.host = host; + record.SR = sr; + smConfig.put("location", path); + record.deviceConfig = smConfig; + pbd = PBD.create(conn, record); + pbd.plug(conn); + sr.scan(conn); } - - final Map smConfig = new HashMap(); - - final Host host = Host.getByUuid(conn, hypervisorResource.getHost().getUuid()); - final String uuid = UUID.randomUUID().toString(); - - sr = SR.introduce(conn, uuid, srname, srname, "file", "file", false, smConfig); - - final PBD.Record record = new PBD.Record(); - - record.host = host; - record.SR = sr; - - smConfig.put("location", path); - - record.deviceConfig = smConfig; - - pbd = PBD.create(conn, record); - - pbd.plug(conn); - - sr.scan(conn); - return sr; } catch (final Exception ex) { try {