summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeyeong Kim <seyeong.kim@canonical.com>2020-06-10 00:39:11 -0700
committerSeyeong Kim <seyeong.kim@canonical.com>2020-07-09 21:36:34 -0700
commit4f85b7d2b4e1be104905b656b9715d8a42124483 (patch)
tree2addc61b029974909b2cc662ef8d6e6c9deb38d8
parentc3b0a808af34061b550d85d2ab9bfa9af34e14a9 (diff)
downloadceilometer-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-xceilometer/compute/virt/libvirt/inspector.py26
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):