summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorLuca Boccassi <bluca@debian.org>2023-04-12 21:37:45 +0100
committerLuca Boccassi <bluca@debian.org>2023-04-13 13:28:25 +0100
commit4c7a0fc8d061b41fdd63eb19b6fc0a5c94668dde (patch)
tree7a83582aa26c4254b5afd85185ef25e61f2a615a /src/core
parent7223d500ac548c69e7879931e3ad8c84838f925b (diff)
downloadsystemd-4c7a0fc8d061b41fdd63eb19b6fc0a5c94668dde.tar.gz
Uphold/StopWhenUnneeded/BindsTo: requeue when job finishes
When a unit is upheld and fails, and there are no state changes in the upholder, it will not be retried, which is against what the documentation suggests. Requeue when the job finishes. Same for the other two queues.
Diffstat (limited to 'src/core')
-rw-r--r--src/core/job.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/core/job.c b/src/core/job.c
index 334fbf770e..826ef6809c 100644
--- a/src/core/job.c
+++ b/src/core/job.c
@@ -1051,6 +1051,12 @@ finish:
job_add_to_gc_queue(other->job);
}
+ /* Ensure that when an upheld/unneeded/bound unit activation job fails we requeue it, if it still
+ * necessary. If there are no state changes in the triggerer, it would not be retried otherwise. */
+ unit_submit_to_start_when_upheld_queue(u);
+ unit_submit_to_stop_when_bound_queue(u);
+ unit_submit_to_stop_when_unneeded_queue(u);
+
manager_check_finished(u->manager);
return 0;