journal: sync immediately on shutting down journald
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 17 Nov 2023 17:58:50 +0000 (02:58 +0900)
committerLuca Boccassi <luca.boccassi@gmail.com>
Wed, 22 Nov 2023 14:07:19 +0000 (14:07 +0000)
Otherwise, sd_event_add_time_relative() or sd_event_source_set_time_relative()
below will trigger assert_return().

Prompted by #30029.

src/journal/journald-server.c

index 85def6c..1c3a2a0 100644 (file)
@@ -1877,6 +1877,12 @@ int server_schedule_sync(Server *s, int priority) {
                 return 0;
         }
 
+        if (!s->event || sd_event_get_state(s->event) == SD_EVENT_FINISHED) {
+                /* Shutting down the server? Let's sync immediately. */
+                server_sync(s);
+                return 0;
+        }
+
         if (s->sync_scheduled)
                 return 0;