]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
journal-file: if we are going down, don't use event loop to schedule post 22861/head
authorLennart Poettering <lennart@poettering.net>
Thu, 24 Mar 2022 20:24:23 +0000 (21:24 +0100)
committerLennart Poettering <lennart@poettering.net>
Fri, 25 Mar 2022 09:03:00 +0000 (10:03 +0100)
The event loop is already shutting down, hence no point in using it
anymore, it's not going to run any further iteration.

src/libsystemd/sd-journal/journal-file.c

index 27875fb9e71cc4a1976f51b77e9d180afc276581..c358772f512f258c7ca4389434790103360f5bdd 100644 (file)
@@ -1931,11 +1931,18 @@ static int post_change_thunk(sd_event_source *timer, uint64_t usec, void *userda
 }
 
 static void schedule_post_change(JournalFile *f) {
+        sd_event *e;
         int r;
 
         assert(f);
         assert(f->post_change_timer);
 
+        assert_se(e = sd_event_source_get_event(f->post_change_timer));
+
+        /* If we are aleady going down, post the change immediately. */
+        if (IN_SET(sd_event_get_state(e), SD_EVENT_EXITING, SD_EVENT_FINISHED))
+                goto fail;
+
         r = sd_event_source_get_enabled(f->post_change_timer, NULL);
         if (r < 0) {
                 log_debug_errno(r, "Failed to get ftruncate timer state: %m");