]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
journal-upload: make watchdog state non-static 2968/head
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 6 Apr 2016 00:27:48 +0000 (20:27 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 6 Apr 2016 00:28:56 +0000 (20:28 -0400)
Also parse watchdog config when creating the Uploader object.

src/journal-remote/journal-upload-journal.c
src/journal-remote/journal-upload.c
src/journal-remote/journal-upload.h

index ac6eb58a9f4e9e2864296fc5320600c8d13d0016..8ce8e1895e60200d249da685f9f71e0d7834ea7b 100644 (file)
@@ -244,24 +244,18 @@ static ssize_t write_entry(char *buf, size_t size, Uploader *u) {
 }
 
 static inline void check_update_watchdog(Uploader *u) {
-        usec_t watchdog_usec;
-        static usec_t before;
         usec_t after;
         usec_t elapsed_time;
 
-        if (sd_watchdog_enabled(false, &watchdog_usec) < 0)
+        if (u->watchdog_usec <= 0)
                 return;
-        if (u->reset_reference_timestamp) {
-                before = now(CLOCK_MONOTONIC);
-                u->reset_reference_timestamp = false;
-        } else {
-                after = now(CLOCK_MONOTONIC);
-                elapsed_time = usec_sub(after, before);
-                if (elapsed_time > watchdog_usec / 2) {
-                        log_debug("Update watchdog timer");
-                        sd_notify(false, "WATCHDOG=1");
-                        u->reset_reference_timestamp = true;
-                }
+
+        after = now(CLOCK_MONOTONIC);
+        elapsed_time = usec_sub(after, u->watchdog_timestamp);
+        if (elapsed_time > u->watchdog_usec / 2) {
+                log_debug("Update watchdog timer");
+                sd_notify(false, "WATCHDOG=1");
+                u->watchdog_timestamp = after;
         }
 }
 
index f2e9117f9f7f5f0547deddd817629ca042ae46ff..4647cfdeb3aeae55c45017bdd57350b53806e8f9 100644 (file)
@@ -463,6 +463,8 @@ static int setup_uploader(Uploader *u, const char *url, const char *state_file)
         if (r < 0)
                 return log_error_errno(r, "Failed to set up signals: %m");
 
+        (void) sd_watchdog_enabled(false, &u->watchdog_usec);
+
         return load_cursor_state(u);
 }
 
@@ -494,7 +496,7 @@ static int perform_upload(Uploader *u) {
 
         assert(u);
 
-        u->reset_reference_timestamp = true;
+        u->watchdog_timestamp = now(CLOCK_MONOTONIC);
         code = curl_easy_perform(u->easy);
         if (code) {
                 if (u->error[0])
index a31735bd083a306f79527b3d72fb4f8d1e518668..5711905f86f2d9e72a600619f46200c35f5438b6 100644 (file)
@@ -4,6 +4,7 @@
 
 #include "sd-event.h"
 #include "sd-journal.h"
+#include "time-util.h"
 
 typedef enum {
         ENTRY_CURSOR = 0,           /* Nothing actually written yet. */
@@ -48,7 +49,8 @@ typedef struct Uploader {
 
         size_t entries_sent;
         char *last_cursor, *current_cursor;
-        bool reset_reference_timestamp;
+        usec_t watchdog_timestamp;
+        usec_t watchdog_usec;
 } Uploader;
 
 #define JOURNAL_UPLOAD_POLL_TIMEOUT (10 * USEC_PER_SEC)