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 6e000efe559..e8a574fb706 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 @@ -87,24 +87,25 @@ public class Xenserver625StorageProcessor extends XenServerStorageProcessor { SR sr = null; PBD pbd = null; try { - String srname = hypervisorResource.getHost().uuid + path.trim(); - Set srs = SR.getByNameLabel(conn, srname); - if ( srs != null && !srs.isEmpty()) { + final String srname = path.trim(); + synchronized (srname.intern()) { + Set srs = SR.getByNameLabel(conn, srname); + if ( srs != null && !srs.isEmpty()) { return srs.iterator().next(); + } + Map smConfig = new HashMap(); + Host host = Host.getByUuid(conn, hypervisorResource.getHost().uuid); + String uuid = UUID.randomUUID().toString(); + sr = SR.introduce(conn, uuid, srname, srname, "file", "file", false, smConfig); + 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); } - Map smConfig = new HashMap(); - Host host = Host.getByUuid(conn, hypervisorResource.getHost().uuid); - String uuid = UUID.randomUUID().toString(); - - sr = SR.introduce(conn, uuid, srname, srname, "file", "file", false, smConfig); - 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 (Exception e) { try {