提交 26256132 编写于 作者: C Cole Robinson

rpc: socket: Don't repeatedly attempt to launch daemon

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
(cherry picked from commit 2eb7a975)
上级 3192efae
...@@ -547,6 +547,7 @@ int virNetSocketNewConnectUNIX(const char *path, ...@@ -547,6 +547,7 @@ int virNetSocketNewConnectUNIX(const char *path,
virSocketAddr remoteAddr; virSocketAddr remoteAddr;
char *rundir = NULL; char *rundir = NULL;
int ret = -1; int ret = -1;
bool daemonLaunched = false;
VIR_DEBUG("path=%s spawnDaemon=%d binary=%s", path, spawnDaemon, VIR_DEBUG("path=%s spawnDaemon=%d binary=%s", path, spawnDaemon,
NULLSTR(binary)); NULLSTR(binary));
...@@ -627,8 +628,12 @@ int virNetSocketNewConnectUNIX(const char *path, ...@@ -627,8 +628,12 @@ int virNetSocketNewConnectUNIX(const char *path,
goto cleanup; goto cleanup;
} }
if (virNetSocketForkDaemon(binary) < 0) if (!daemonLaunched) {
goto cleanup; if (virNetSocketForkDaemon(binary) < 0)
goto cleanup;
daemonLaunched = true;
}
usleep(5000); usleep(5000);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册