From 4f85b7d2b4e1be104905b656b9715d8a42124483 Mon Sep 17 00:00:00 2001 From: Seyeong Kim Date: Wed, 10 Jun 2020 00:39:11 -0700 Subject: [PATCH] Adding exception handling when inspect_disks It raises error even when live migration. As live migration uses lock normally, it should not be an error. Story: #2007651 Task: #39715 Change-Id: I3c0f29f79dc3c73e7aec9c9035c94c0fdcf8ccfd --- ceilometer/compute/virt/libvirt/inspector.py | 26 +++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/ceilometer/compute/virt/libvirt/inspector.py b/ceilometer/compute/virt/libvirt/inspector.py index a83cbdb282..4bac2a0930 100755 --- a/ceilometer/compute/virt/libvirt/inspector.py +++ b/ceilometer/compute/virt/libvirt/inspector.py @@ -139,15 +139,23 @@ class LibvirtInspector(virt_inspector.Inspector): def inspect_disks(self, instance, duration): domain = self._get_domain_not_shut_off_or_raise(instance) for device in self._get_disk_devices(domain): - block_stats = domain.blockStats(device) - block_stats_flags = domain.blockStatsFlags(device, 0) - yield virt_inspector.DiskStats( - device=device, - read_requests=block_stats[0], read_bytes=block_stats[1], - write_requests=block_stats[2], write_bytes=block_stats[3], - errors=block_stats[4], - wr_total_times=block_stats_flags['wr_total_times'], - rd_total_times=block_stats_flags['rd_total_times']) + try: + block_stats = domain.blockStats(device) + block_stats_flags = domain.blockStatsFlags(device, 0) + yield virt_inspector.DiskStats( + device=device, + read_requests=block_stats[0], read_bytes=block_stats[1], + write_requests=block_stats[2], write_bytes=block_stats[3], + errors=block_stats[4], + wr_total_times=block_stats_flags['wr_total_times'], + rd_total_times=block_stats_flags['rd_total_times']) + except libvirt.libvirtError as ex: + # raised error even if lock is acquired while live migration, + # even it looks normal. + LOG.warning(_("Error from libvirt while checking blockStats, " + "This may not be harmful, but please check : " + "%(ex)s") % {'ex': ex}) + pass @libvirt_utils.retry_on_disconnect def inspect_disk_info(self, instance, duration):