Code

virt plugin: Properly reset the lists
authorFrancesco Romani <fromani@redhat.com>
Thu, 24 Nov 2016 15:09:41 +0000 (16:09 +0100)
committerFrancesco Romani <fromani@redhat.com>
Wed, 30 Nov 2016 09:27:00 +0000 (10:27 +0100)
If all the libvirt domains are shutdown between two refresh cycles,
the code failed to clean the lists.
Thus, the last detected libvirt domains are kept forever, leading
to failures in the data collection.
This leads to messages like

Nov 24 15:34:57 benji.rokugan.lan collectd[15083]: libvirt: QEMU Driver
error : Domain not found: no domain with matching uuid
'bc324fee-5707-4ac6-a650-6037562d4632' (nano_C010)

In the logs.
This bug was also present in collectd 5.6.1.

Signed-off-by: Francesco Romani <fromani@redhat.com>
src/virt.c

index 7cb90b7763a28814e9de27fd6f6622d31414bcaf..6afd2390bd02f848c49507ee939052ac1ca3238b 100644 (file)
@@ -836,6 +836,8 @@ static int refresh_lists(struct lv_read_instance *inst) {
     return -1;
   }
 
+  lv_clean_read_state(state);
+
   if (n > 0) {
     int *domids;
 
@@ -853,8 +855,6 @@ static int refresh_lists(struct lv_read_instance *inst) {
       return -1;
     }
 
-    lv_clean_read_state(state);
-
     /* Fetch each domain and add it to the list, unless ignore. */
     for (int i = 0; i < n; ++i) {
       virDomainPtr dom = NULL;