On Tue, Jan 18, 2022 at 03:51:21PM +0100, Michal Prívozník wrote:
On 1/18/22 15:38, Peter Krempa wrote:
> The existence of the unix socket path is used by the remote driver to
> determine whether modular daemons are in use, so if the socket file
> stays behind and the user decided to switch from modular to monolithic
> daemon which was socket activated, the remote driver will insist on
> picking '/var/run/libvirt/virtqemud-sock', even when it's no longer in
> use:
>
> # systemctl start libvirtd.service
> # virsh list
> Id Name State
> --------------------
>
> # systemctl stop libvirtd.service
> Warning: Stopping libvirtd.service, but it can still be activated by:
> libvirtd.socket
> libvirtd-ro.socket
> libvirtd-admin.socket
> # systemctl start virtqemud.socket
> # virsh list
> Id Name State
> --------------------
>
> # systemctl stop virtqemud.socket
> # systemctl start libvirtd.service
> # virsh list
> error: failed to connect to the hypervisor
> error: Failed to connect socket to '/var/run/libvirt/virtqemud-sock':
Connection refused
>
> # virsh -c 'qemu:///system?socket=/var/run/libvirt/libvirt-sock' list
> Id Name State
> --------------------
>
> Fix this by instructing systemd to delete the socket file when
> deactivating the unit file for the socket.
>
> Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
> ---
> src/remote/libvirtd.socket.in | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/src/remote/libvirtd.socket.in b/src/remote/libvirtd.socket.in
> index 85b4aa800a..0f349656f5 100644
> --- a/src/remote/libvirtd.socket.in
> +++ b/src/remote/libvirtd.socket.in
> @@ -9,6 +9,7 @@ Before=@service@.service
> ListenStream=@runstatedir@/libvirt/@sockprefix@-sock
> Service=@service@.service
> SocketMode=@mode@
> +RemoveOnStop=yes
I beg your pardon? Systemd leaves a stale socket behind? Isn't this
something that systemd needs to fix?
Michal