[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#55444: elogind startup race between shepherd and dbus-daemon
From: |
Josselin Poiret |
Subject: |
bug#55444: elogind startup race between shepherd and dbus-daemon |
Date: |
Sat, 28 May 2022 10:13:26 +0200 |
Hello Ludo,
Ludovic Courtès <ludo@gnu.org> writes:
> The patch below address that: it changes the “Exec=” line of
> ‘org.freedesktop.login1’ to refer to a wrapper. That wrapper connects
> to shepherd and waits until ‘elogind’ is started.
>
> That way, if dbus-daemon comes first, it won’t actually launch anything
> and instead wait for the Shepherd ‘elogind’ service to be up. (And if
> it comes second, dbus-daemon won’t try to launch anything, so no
> spurious “already running” messages.)
>
> I tested it in a ‘desktop.tmpl’ VM, quickly logging in on tty1. On
> /var/log/messages, you can see the “Activating ….login1” message from
> dbus-daemon, followed by “Service elogind started” from shepherd,
> followed by “Successfully activated ….login1” from dbus-daemon.
>
> The “elogind” system test passes too.
>
> Thoughts? Objections?
>
> Ludo’.
Great idea! The patch LGTM, although I'd argue that most of the wrapper
code could belong in (gnu services herd), in something like
(wait-for-services #:select? select? #:retries (n 20)) so that someone
else doesn't end up recoding this for another service.
Best,
--
Josselin Poiret