[systemd-devel] Should long-running child processes clear INVOCATION_ID?

Simon McVittie smcv at collabora.com
Fri Mar 2 15:16:53 UTC 2018


When dbus-daemon carries out a mixture of systemd and traditional
(non-systemd) activation, we get a process tree like this:

    systemd --user                               (init.scope)
        |- dbus-daemon --session                 (dbus.service)
        |  |- (babysitter process)
        |  |  \- gnome-shell-calendar-server     [t]
        |  \- (babysitter process)
        |     \- dleyna-renderer-service         [t]
        |- gnome-terminal-server                 (g-t-s.service) [s]
        \- xdg-document-portal                   (x-d-p.service) [s]

    [s]: systemd activation; [t]: traditional activation

or the equivalent for the system bus.

As of current git master, the dbus-daemon removes some of its environment
variables from the environment passed to traditional D-Bus services
like gnome-shell-calendar-server, because they are applicable to to the
dbus-daemon but not the child. In particular JOURNAL_STREAM, LISTEN_*
and NOTIFY_SOCKET get this treatment.

However, it wasn't clear to me what this code should do with the
INVOCATION_ID. Would it be better (less misleading) to say that
gnome-shell-calendar-server is part of the same INVOCATION_ID as its
dbus-daemon parent, or to say that it has no invocation ID?

Thanks,
    smcv


More information about the systemd-devel mailing list