Add patch for Reload bug
This commit is contained in:
parent
d4d36e6a87
commit
176a1807d2
@ -0,0 +1,48 @@
|
||||
From e63ebf71edd7947f29389c72e851d8df5c7bedda Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Fri, 16 Mar 2018 23:01:05 +0100
|
||||
Subject: [PATCH] core: when reloading, delay any actions on journal and dbus
|
||||
connections
|
||||
|
||||
manager_recheck_journal() and manager_recheck_dbus() would be called to early
|
||||
while we were deserialiazing units, before the systemd-journald.service and
|
||||
dbus.service have been deserialized. In effect we'd disable logging to the
|
||||
journald and close the bus connection. The first is not very noticable, it
|
||||
mostly means that logs emitted during deserialization are lost. The second is
|
||||
more noticeable, because manager_recheck_dbus() would call bus_done_api() and
|
||||
bus_done_system() and close dbus connections. Logging and bus connection would
|
||||
then be restored later after the respective units have been deserialized.
|
||||
|
||||
This is easily reproduced by calling:
|
||||
$ sudo gdbus call --system --dest org.freedesktop.systemd1 --object-path /org/freedesktop/systemd1 --method "org.freedesktop.systemd1.Manager.Reload"
|
||||
which works fine before 8559b3b75cb, and then starts failing with:
|
||||
Error: GDBus.Error:org.freedesktop.DBus.Error.NoReply: Remote peer disconnected
|
||||
|
||||
None of this should happen, and we should delay changing state until after
|
||||
deserialization is complete when reloading. manager_reload() already included
|
||||
the calls to manager_recheck_journal() and manager_recheck_dbus(), so the
|
||||
connection state will be updated after deserialization during reloading is done.
|
||||
|
||||
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1554578.
|
||||
---
|
||||
src/core/unit.c | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/core/unit.c b/src/core/unit.c
|
||||
index 815701ad4e..f88aabba61 100644
|
||||
--- a/src/core/unit.c
|
||||
+++ b/src/core/unit.c
|
||||
@@ -2501,8 +2501,11 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
|
||||
}
|
||||
}
|
||||
|
||||
- manager_recheck_journal(m);
|
||||
- manager_recheck_dbus(m);
|
||||
+ if (!MANAGER_IS_RELOADING(u->manager)) {
|
||||
+ manager_recheck_journal(m);
|
||||
+ manager_recheck_dbus(m);
|
||||
+ }
|
||||
+
|
||||
unit_trigger_notify(u);
|
||||
|
||||
if (!MANAGER_IS_RELOADING(u->manager)) {
|
@ -13,7 +13,7 @@
|
||||
Name: systemd
|
||||
Url: http://www.freedesktop.org/wiki/Software/systemd
|
||||
Version: 238
|
||||
Release: 3%{?gitcommit:.git%{gitcommitshort}}%{?dist}
|
||||
Release: 4%{?gitcommit:.git%{gitcommitshort}}%{?dist}
|
||||
# For a breakdown of the licensing, see README
|
||||
License: LGPLv2+ and MIT and GPLv2+
|
||||
Summary: System and Service Manager
|
||||
@ -50,6 +50,7 @@ GIT_DIR=../../src/systemd/.git git diffab -M v233..master@{2017-06-15} -- hwdb/[
|
||||
|
||||
Patch0001: 0001-test-cgroup-util-bail-out-when-running-under-mock.patch
|
||||
Patch0002: 0002-basic-fs-util-skip-fsync_directory_of_file-if-proc-s.patch
|
||||
Patch0003: 0003-core-when-reloading-delay-any-actions-on-journal-and.patch
|
||||
|
||||
Patch0998: 0998-resolved-create-etc-resolv.conf-symlink-at-runtime.patch
|
||||
|
||||
@ -704,6 +705,9 @@ fi
|
||||
%files tests -f .file-list-tests
|
||||
|
||||
%changelog
|
||||
* Fri Mar 16 2018 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 238-4
|
||||
- Do not close dbus connection during dbus reload call (#1554578)
|
||||
|
||||
* Wed Mar 7 2018 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 238-3
|
||||
- Revert the patches for GRUB BootLoaderSpec support
|
||||
- Add patch for /etc/machine-id creation (#1552843)
|
||||
|
Loading…
Reference in New Issue
Block a user