diff mbox

[3/3] rpc: socket: Don't repeatedly attempt to launch daemon

Message ID f4bd2ea2e42e8816e6a3e6b3b41ebb56bb0227a1.1452561712.git.crobinso@redhat.com
State Accepted
Commit 2eb7a975756d05a5b54ab4acf60083beb6161ac6
Headers show

Commit Message

Cole Robinson Jan. 12, 2016, 1:22 a.m. UTC
On every socket connect(2) attempt we were re-launching session
libvirtd, up to 100 times in 5 seconds.

This understandably caused some weird load races and intermittent
qemu:///session startup failures

https://bugzilla.redhat.com/show_bug.cgi?id=1271183
---
 src/rpc/virnetsocket.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

-- 
2.5.0

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
diff mbox

Patch

diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
index 2d6d44f..368774a 100644
--- a/src/rpc/virnetsocket.c
+++ b/src/rpc/virnetsocket.c
@@ -619,6 +619,7 @@  int virNetSocketNewConnectUNIX(const char *path,
     virSocketAddr remoteAddr;
     char *rundir = NULL;
     int ret = -1;
+    bool daemonLaunched = false;
 
     VIR_DEBUG("path=%s spawnDaemon=%d binary=%s", path, spawnDaemon,
         NULLSTR(binary));
@@ -699,8 +700,12 @@  int virNetSocketNewConnectUNIX(const char *path,
             goto cleanup;
         }
 
-        if (virNetSocketForkDaemon(binary) < 0)
-            goto cleanup;
+        if (!daemonLaunched) {
+            if (virNetSocketForkDaemon(binary) < 0)
+                goto cleanup;
+
+            daemonLaunched = true;
+        }
 
         usleep(5000);
     }