From 89878edf95d7c23066fdd8f24afddb14c54efccf Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Fri, 25 Apr 2014 10:48:13 -0700 Subject: [PATCH] fix(sys-apps/systemd): Add patch for daemon-reload bug. This should fix our issue with hung jobs. Patch from here: http://lists.freedesktop.org/archives/systemd-devel/2014-April/018361.html Bug report: https://bugs.freedesktop.org/show_bug.cgi?id=77066 --- ...g-jobs-to-run-queue-in-unit_coldplug.patch | 32 +++++++++++++++++++ ...md-212-r2.ebuild => systemd-212-r3.ebuild} | 3 ++ 2 files changed, 35 insertions(+) create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/212-0002-unit-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch rename sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/{systemd-212-r2.ebuild => systemd-212-r3.ebuild} (99%) diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/212-0002-unit-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/212-0002-unit-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch new file mode 100644 index 0000000000..8e4c225cc8 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/212-0002-unit-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch @@ -0,0 +1,32 @@ +From 7b6a4f0380c0f95e0ce1beccddd82b6c4aecc8bc Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Tue, 1 Apr 2014 18:45:54 +0200 +Subject: [PATCH] unit: add waiting jobs to run queue in unit_coldplug + +When we have job installed and added to run queue for service which is still in +dead state and systemd initiates reload then after reload we never add +deserialized job to the run queue again. This is caused by check in +service_coldplug() where we check if deserialized state is something else +than dead state, which is not the case thus we never call service_set_state() +and finally unit_notify() where we would have added job to the run queue. +--- + src/core/unit.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/core/unit.c b/src/core/unit.c +index 153b79b..bb7893b 100644 +--- a/src/core/unit.c ++++ b/src/core/unit.c +@@ -2558,6 +2558,9 @@ int unit_coldplug(Unit *u) { + r = job_coldplug(u->job); + if (r < 0) + return r; ++ ++ if (u->job->state == JOB_WAITING) ++ job_add_to_run_queue(u->job); + } else if (u->deserialized_job >= 0) { + /* legacy */ + r = manager_add_job(u->manager, u->deserialized_job, u, JOB_IGNORE_REQUIREMENTS, false, NULL, NULL); +-- +1.8.3.2 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-212-r2.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-212-r3.ebuild similarity index 99% rename from sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-212-r2.ebuild rename to sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-212-r3.ebuild index c2869ba324..6fbca3c1c8 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-212-r2.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-212-r3.ebuild @@ -116,6 +116,9 @@ fi # fix networkd crash, https://bugs.gentoo.org/show_bug.cgi?id=507044 epatch "${FILESDIR}"/212-0001-sd-rtnl-fix-off-by-one.patch + # fix stuck jobs after daemon-reload + epatch "${FILESDIR}"/212-0002-unit-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch + # CoreOs specific hacks^Wfeatures epatch "${FILESDIR}"/211-handle-empty-etc-os-release.patch