Activity log for bug #1524726

Date Who What changed Old value New value Message
2015-12-10 10:56:12 nail-zte bug added bug
2015-12-11 01:57:50 nail-zte description The method _get_instance_disk_info() in libvirt driver will get volume size from lvm.py using logical volume path.When the volume path is not exist,it will raise “VolumeBDMPathNotFound”,while "ProcessExecutionError" directly with other problems.Related codes as following: try: out, _err = utils.execute('blockdev', '--getsize64', path, run_as_root=True) except processutils.ProcessExecutionError: if not utils.path_exists(path): raise exception.VolumeBDMPathNotFound(path=path) else: raise So, in this case, if the logical volume path is exactly exists, but something wrong with the backend to get volume size, it will raise "ProcessExecutionError". The point is that libvirt driver would not catch the "ProcessExecutionError" exception, this nova-compute service down finally.Then because of guard.sevice nova-compute will restart over and over again. Code in libvirt driver as following: dk_size = lvm.get_volume_size(path) We think the error appeared in backend should not infact the nova-compute service. we think we can catch ProcessExecutionError in libvirt dirver and set dk_size = 0. This bug appeared in Kilo as well as Liberty. The method _get_instance_disk_info() in libvirt driver will get volume size from lvm.py using logical volume path.When the volume path is not exist,it will raise “VolumeBDMPathNotFound”,while "ProcessExecutionError" directly with other problems.Related codes as following: try:         out, _err = utils.execute('blockdev', '--getsize64', path,                                   run_as_root=True) except processutils.ProcessExecutionError:         if not utils.path_exists(path):             raise exception.VolumeBDMPathNotFound(path=path)         else:             raise So, in this case, if the logical volume path is exactly exists, but something wrong with the backend to get volume size, it will raise "ProcessExecutionError". The point is that libvirt driver would not catch the "ProcessExecutionError" exception, this nova-compute service down finally.Then because of guard.sevice, nova-compute will restart over and over again. Code in libvirt driver as following:         dk_size = lvm.get_volume_size(path) We think the error appeared in backend should not infact the nova-compute service. we think we can catch ProcessExecutionError in libvirt dirver and set dk_size = 0. This bug appeared in Kilo as well as Liberty.
2015-12-14 02:48:37 Tardis Xu nova: status New Incomplete
2016-02-03 09:17:03 nail-zte nova: assignee nail-zte (nail-i)
2016-04-18 10:45:05 Lee Yarwood nova: status Incomplete Confirmed
2016-06-17 22:41:56 Sujitha nova: assignee nail-zte (nail-i)
2016-06-21 22:40:22 Augustina Ragwitz tags liberty-backport-potential
2016-06-21 22:40:44 Augustina Ragwitz tags liberty-backport-potential liberty-backport-potential libvirt
2016-06-21 22:41:07 Augustina Ragwitz tags liberty-backport-potential libvirt liberty-backport-potential libvirt volumes
2016-07-14 11:00:18 John Garbutt nova: importance Undecided Low