virt plugin: Added connection state check via virConnectIsAlive()
authorPavel Rochnyack <pavel2000@ngs.ru>
Fri, 24 May 2019 10:56:27 +0000 (17:56 +0700)
committerPavel Rochnyack <pavel2000@ngs.ru>
Fri, 24 May 2019 11:00:23 +0000 (18:00 +0700)
Before this fix, if libvirt daemon was stopped, Collectd starts to spam logs with lot of "failed" messages.

With this fix it correctly re-establishes connection.

src/virt.c

index 6a91992..7e7e057 100644 (file)
@@ -2418,6 +2418,21 @@ static int lv_read(user_data_t *ud) {
     return 0;
   }
 
+  int ret = virConnectIsAlive(conn);
+  if (ret == 0) { /* Connection lost */
+    if (inst->id == 0) {
+      c_complain(LOG_ERR, &conn_complain,
+                 PLUGIN_NAME " plugin: Lost connection.");
+
+      if (!persistent_notification)
+        stop_event_loop(&notif_thread);
+
+      lv_disconnect();
+      last_refresh = 0;
+    }
+    return -1;
+  }
+
   time_t t;
   time(&t);