diff options
author | Seyeong Kim <seyeong.kim@canonical.com> | 2020-06-10 00:39:11 -0700 |
---|---|---|
committer | Seyeong Kim <seyeong.kim@canonical.com> | 2020-07-09 21:36:34 -0700 |
commit | 4f85b7d2b4e1be104905b656b9715d8a42124483 (patch) | |
tree | 2addc61b029974909b2cc662ef8d6e6c9deb38d8 | |
parent | c3b0a808af34061b550d85d2ab9bfa9af34e14a9 (diff) | |
download | ceilometer-4f85b7d2b4e1be104905b656b9715d8a42124483.tar.gz |
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
-rwxr-xr-x | ceilometer/compute/virt/libvirt/inspector.py | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/ceilometer/compute/virt/libvirt/inspector.py b/ceilometer/compute/virt/libvirt/inspector.py index a83cbdb2..4bac2a09 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): |