On Wed, Nov 4, 2020 at 7:47 AM Neal Gompa <ngompa13(a)gmail.com> wrote:
On Tue, Nov 3, 2020 at 9:26 PM Jim Fehlig <jfehlig(a)suse.com> wrote:
>
> When restarting libvirt services and sockets *and* libvirt-guests.service
> is running, the latter will sometimes hang when trying to connect to
> libvirtd. Even though libvirt-guests has 'Wants=libvirtd.service' and
> 'After=libvirtd.service', we can see via journalctl that it is not
> shutdown before libvirtd when executing something like
>
> systemctl try-restart libvirtd.service libvirtd.socket \
> libvirtd-ro.socket virtlockd.service virtlockd.socket \
> virtlogd.service virtlogd.socket virt-guest-shutdown.target
>
...
> Adding 'Requires=libvirtd.service' to
virt-guest-shutdown.target results
> in expected behavior
Hi Jim (and all others),
This change is accepted since 6.10 [1] - while testing 7.0 for Debian
I've found that this change
regresses us bringing back bug 955216 [2] for us.
Based on how the require statement works I think it is bringing the
same issue to everyone
(not just Debian/Ubuntu).
That issue is - once you restart libvirtd.service (common on upgrades)
it will now also always
cycle libvirt-guests.service through a restart.
But cycling libvirt-guests.service means shutting down and starting
all guests which suddenly
makes upgrading libvirt very disruptive.
For the time being I've suggested we revert this change in
Debian/Ubuntu, but I wonder if
there could be something that ensures the ordering Jim wanted to achieve without
hard-linking (via ) a libvirtd.service restart to also restart
libvirt-guests.service?
--- log showing that libvirtd.service now restarts libvirt-guests as well ---
root@h-libvirt-netcheck-up:~# systemctl status libvirt-guests.service
● libvirt-guests.service - Suspend/Resume Running libvirt Guests
Loaded: loaded (/lib/systemd/system/libvirt-guests.service;
enabled; vendor preset: enabled)
Active: active (exited) since Wed 2021-01-27 06:33:41 UTC; 1h 19min ago
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 56753 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 38269)
Memory: 0B
CGroup: /system.slice/libvirt-guests.service
Jan 27 06:33:41 h-libvirt-netcheck-up systemd[1]: Starting
Suspend/Resume Running libvirt Guests...
Jan 27 06:33:41 h-libvirt-netcheck-up systemd[1]: Finished
Suspend/Resume Running libvirt Guests.
root@h-libvirt-netcheck-up:~# systemctl restart libvirtd
root@h-libvirt-netcheck-up:~# systemctl status libvirt-guests.service
● libvirt-guests.service - Suspend/Resume Running libvirt Guests
Loaded: loaded (/lib/systemd/system/libvirt-guests.service;
enabled; vendor preset: enabled)
Active: active (exited) since Wed 2021-01-27 07:52:57 UTC; 4s ago
Docs: man:libvirtd(8)
https://libvirt.org
Process: 57626 ExecStart=/usr/lib/libvirt/libvirt-guests.sh start
(code=exited, status=0/SUCCESS)
Main PID: 57626 (code=exited, status=0/SUCCESS)
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Starting
Suspend/Resume Running libvirt Guests...
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Finished
Suspend/Resume Running libvirt Guests.
You see new PID, and entries that it stopped/started all guests.
--- journal while the above restarts happened ---
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Stopping
Suspend/Resume Running libvirt Guests...
Jan 27 07:52:57 h-libvirt-netcheck-up libvirt-guests.sh[57593]:
Running guests on default URI:
Jan 27 07:52:57 h-libvirt-netcheck-up libvirt-guests.sh[57602]: no
running guests.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]:
libvirt-guests.service: Succeeded.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Stopped
Suspend/Resume Running libvirt Guests.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Stopped target
Libvirt guests shutdown.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Stopping Libvirt
guests shutdown.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Stopping
Virtualization daemon...
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: libvirtd.service: Succeeded.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: libvirtd.service:
Unit process 343 (dnsmasq) remains running after unit stopped.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: libvirtd.service:
Unit process 344 (dnsmasq) remains running after unit stopped.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Stopped Virtualization daemon.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: libvirtd.service:
Found left-over process 343 (dnsmasq) in control group while starting
unit. Ignoring.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: This usually
indicates unclean termination of a previous run, or service
implementation deficiencies.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: libvirtd.service:
Found left-over process 344 (dnsmasq) in control group while starting
unit. Ignoring.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: This usually
indicates unclean termination of a previous run, or service
implementation deficiencies.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Starting
Virtualization daemon...
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Started Virtualization daemon.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Reached target
Libvirt guests shutdown.
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Starting
Suspend/Resume Running libvirt Guests...
Jan 27 07:52:57 h-libvirt-netcheck-up systemd[1]: Finished
Suspend/Resume Running libvirt Guests.
[1]:
https://gitlab.com/libvirt/libvirt/-/commit/f035f53baa2e5dc00b8e866e59467...
[2]:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=955216