systemd/units/systemd-journald-sync@.service
Yu Watanabe 61628287bd journal: explicitly sync namespaced journals before stopping socket units
Otherwise, if a service unit that requests LogNamespace= stopped before
systemd-journald@.service is started, logs generated by the service will be
lost, as systemd-journald@.socket is stopped and
systemd-journald@.service will never started.

To prevent the issue, let's introduce another implicit dependency to
a oneshot service that explicitly synchronizes a namespaced journal file
when the log namespace is not needed anymore.

Fixes #32604.
2024-05-02 19:41:01 +02:00

25 lines
880 B
Desktop File

# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Sync Journal for Namespace %i
Documentation=man:systemd-journald.service(8) man:journald.conf(5)
# At the time when journalctl in ExecStop= is invoked,
# systemd-journald@.service may not be started yet. Hence, both socket
# units must be active when journalctl is invoked.
Requires=systemd-journald@%i.socket systemd-journald-varlink@%i.socket
After=systemd-journald@%i.socket systemd-journald-varlink@%i.socket
StopWhenUnneeded=yes
[Service]
ExecStop=journalctl --namespace=%i --sync
Type=oneshot
RemainAfterExit=yes