From 31b2bf6b6252b8b36ab43ce968b2c09d3baa5b4b Mon Sep 17 00:00:00 2001 From: illustris Date: Mon, 16 Oct 2023 21:36:33 +0530 Subject: [PATCH] handle race condition --- src/pvemon/__init__.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/pvemon/__init__.py b/src/pvemon/__init__.py index 1e69338..c7948ca 100644 --- a/src/pvemon/__init__.py +++ b/src/pvemon/__init__.py @@ -117,18 +117,20 @@ def read_interface_stats(ifname): return stats def collect_kvm_metrics(): - procs = [ - ( - # proc object - proc, - # cmdline list - proc.cmdline(), - # VMID - flag_to_label_value(proc.cmdline(),"-id") - ) - for proc in psutil.process_iter(['pid', 'name', 'cmdline', 'cpu_percent', 'memory_percent', 'num_threads']) - if proc.exe() == '/usr/bin/qemu-system-x86_64' - ] + procs = [] + for proc in psutil.process_iter(['pid', 'name', 'cmdline', 'cpu_percent', 'memory_percent', 'num_threads']): + try: + if proc.info['exe'] == '/usr/bin/qemu-system-x86_64': + procs.append( + ( + proc, + proc.info['cmdline'], + flag_to_label_value(proc.info['cmdline'], "-id") + ) + ) + except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): + continue + for proc, cmdline, id in procs: # Extract vm labels from cmdline info_label_dict = {get_label_name(l): flag_to_label_value(cmdline,l) for l in label_flags}