]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
scope: only stop watching processes when we go down 29230/head
authorLennart Poettering <lennart@poettering.net>
Tue, 19 Sep 2023 14:24:32 +0000 (16:24 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 19 Sep 2023 20:28:42 +0000 (22:28 +0200)
Let's not stop watching processes on every scope state change. This
corrects behaviour when a scope is being enqueued and hasn't started
yet, but has processes associated to it already. previously, if we'd doa
full PID 1 reload we'd stop watching those pids. With this change we'll
continue watching them in that case, and only stop watching them when
the scope unit really shuts down after first being up.

src/core/scope.c

index d8860a6da1c210bc5051e6224ef3c58108ad2537..1bcd4ed84f29ade6770ed4ee6060ec3e91ea212d 100644 (file)
@@ -119,7 +119,7 @@ static void scope_set_state(Scope *s, ScopeState state) {
         if (!IN_SET(state, SCOPE_STOP_SIGTERM, SCOPE_STOP_SIGKILL, SCOPE_START_CHOWN, SCOPE_RUNNING))
                 s->timer_event_source = sd_event_source_disable_unref(s->timer_event_source);
 
-        if (IN_SET(state, SCOPE_DEAD, SCOPE_FAILED)) {
+        if (!IN_SET(old_state, SCOPE_DEAD, SCOPE_FAILED) && IN_SET(state, SCOPE_DEAD, SCOPE_FAILED)) {
                 unit_unwatch_all_pids(UNIT(s));
                 unit_dequeue_rewatch_pids(UNIT(s));
         }