Liron Aravot has uploaded a new change for review. Change subject: core: GetAllDisksByVmId - race condition leads to NPE ......................................................................
core: GetAllDisksByVmId - race condition leads to NPE The given query is executed to get the vm disks with some required info (properties from the vm_device, snapshots..etc). As there are multiple queries on that flow, if some operation is done while the query runs we might get NPE (and inconsistent results). This patch prevents NPE when the vm device of a given disk was removed (which means that it was detached from the vm). Change-Id: Iffd0f8f695ce88baf2e1fbbe1deedf401a13b246 Bug-Url: https://bugzilla.redhat.com/1130065 Signed-off-by: Liron Aravot <lara...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllDisksByVmIdQuery.java 1 file changed, 7 insertions(+), 5 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/98/31498/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllDisksByVmIdQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllDisksByVmIdQuery.java index b3f1592..9cc1519 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllDisksByVmIdQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllDisksByVmIdQuery.java @@ -35,11 +35,13 @@ List<Disk> disks = new ArrayList<Disk>(allDisks); for (Disk disk : allDisks) { VmDevice diskDevice = disksVmDevices.get(disk.getId()); - disk.setPlugged(diskDevice.getIsPlugged()); - disk.setReadOnly(diskDevice.getIsReadOnly()); - if (disk.getDiskStorageType() == DiskStorageType.IMAGE) { - DiskImage diskImage = (DiskImage) disk; - diskImage.getSnapshots().addAll(getAllImageSnapshots(diskImage)); + if (diskDevice != null) { + disk.setPlugged(diskDevice.getIsPlugged()); + disk.setReadOnly(diskDevice.getIsReadOnly()); + if (disk.getDiskStorageType() == DiskStorageType.IMAGE) { + DiskImage diskImage = (DiskImage) disk; + diskImage.getSnapshots().addAll(getAllImageSnapshots(diskImage)); + } } } getQueryReturnValue().setReturnValue(disks); -- To view, visit http://gerrit.ovirt.org/31498 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iffd0f8f695ce88baf2e1fbbe1deedf401a13b246 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Liron Aravot <lara...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches