commit e0c7d6c8816d0c21b2913adc7a3d6cbd59604cd0
Author: Matt Riedemann <email address hidden>
Date: Wed Mar 14 16:43:22 2018 -0400
libvirt: handle DiskNotFound during update_available_resource
The update_available_resource periodic task in the compute manager
eventually calls through to the resource tracker and virt driver
get_available_resource method, which gets the guests running on
the hypervisor, and builds up a set of information about the host.
This includes disk information for the active domains.
However, the periodic task can race with instances being deleted
concurrently and the hypervisor can report the domain but the driver
has already deleted the backing files as part of deleting the
instance, and this leads to failures when running "qemu-img info"
on the disk path which is now gone.
When that happens, the entire periodic update fails.
This change simply tries to detect the specific failure from
'qemu-img info' and translate it into a DiskNotFound exception which
the driver can handle. In this case, if the associated instance is
undergoing a task state transition such as moving to another host or
being deleted, we log a message and continue. If the instance is in
steady state (task_state is not set), then we consider it a failure
and re-raise it up.
Note that we could add the deleted=False filter to the instance query
in _get_disk_over_committed_size_total but that doesn't help us in
this case because the hypervisor says the domain is still active
and the instance is not actually considered deleted in the DB yet.
NOTE(lyarwood): Conflicts due to the substantial refactoring of
_get_instance_disk_info via I9616a602ee0605f7f1dc1f47b6416f01895e025b
and removal of _LW etc during Pike,
Change-Id: Icec2769bf42455853cbe686fb30fda73df791b25
Closes-Bug: #1662867
(cherry picked from commit 5f16e714f58336344752305f94451e7c7c55742c)
(cherry picked from commit 5a4c6913a37f912489543abd5e12a54feeeb89e2)
(cherry picked from commit d251b95083731829ba104dc5c7f642dd5097d510)
Reviewed: https:/ /review. openstack. org/571432 /git.openstack. org/cgit/ openstack/ nova/commit/ ?id=e0c7d6c8816 d0c21b2913adc7a 3d6cbd59604cd0
Committed: https:/
Submitter: Zuul
Branch: stable/ocata
commit e0c7d6c8816d0c2 1b2913adc7a3d6c bd59604cd0
Author: Matt Riedemann <email address hidden>
Date: Wed Mar 14 16:43:22 2018 -0400
libvirt: handle DiskNotFound during update_ available_ resource
The update_ available_ resource periodic task in the compute manager available_ resource method, which gets the guests running on
eventually calls through to the resource tracker and virt driver
get_
the hypervisor, and builds up a set of information about the host.
This includes disk information for the active domains.
However, the periodic task can race with instances being deleted
concurrently and the hypervisor can report the domain but the driver
has already deleted the backing files as part of deleting the
instance, and this leads to failures when running "qemu-img info"
on the disk path which is now gone.
When that happens, the entire periodic update fails.
This change simply tries to detect the specific failure from
'qemu-img info' and translate it into a DiskNotFound exception which
the driver can handle. In this case, if the associated instance is
undergoing a task state transition such as moving to another host or
being deleted, we log a message and continue. If the instance is in
steady state (task_state is not set), then we consider it a failure
and re-raise it up.
Note that we could add the deleted=False filter to the instance query over_committed_ size_total but that doesn't help us in
in _get_disk_
this case because the hypervisor says the domain is still active
and the instance is not actually considered deleted in the DB yet.
Conflicts:
nova/ virt/libvirt/ driver. py
nova/ tests/unit/ virt/libvirt/ test_driver. py
NOTE(lyarwood): Conflicts due to the substantial refactoring of instance_ disk_info via I9616a602ee0605 f7f1dc1f47b6416 f01895e025b
_get_
and removal of _LW etc during Pike,
Change-Id: Icec2769bf42455 853cbe686fb30fd a73df791b25 44752305f94451e 7c7c55742c) 489543abd5e12a5 4feeeb89e2) 9ba104dc5c7f642 dd5097d510)
Closes-Bug: #1662867
(cherry picked from commit 5f16e714f583363
(cherry picked from commit 5a4c6913a37f912
(cherry picked from commit d251b9508373182