summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2016-04-05 20:27:48 -0400
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2016-04-05 20:28:56 -0400
commit0aa176a751a00b5645007c4d0763078ce2824aba (patch)
treefbbc4d02b55d1aaa1bdbcff821c00c8e5a8f012b /src
parentd79ca7a622abbb0df6f5166cc0e4669373d9a614 (diff)
journal-upload: make watchdog state non-static
Also parse watchdog config when creating the Uploader object.
Diffstat (limited to 'src')
-rw-r--r--src/journal-remote/journal-upload-journal.c22
-rw-r--r--src/journal-remote/journal-upload.c4
-rw-r--r--src/journal-remote/journal-upload.h4
3 files changed, 14 insertions, 16 deletions
diff --git a/src/journal-remote/journal-upload-journal.c b/src/journal-remote/journal-upload-journal.c
index ac6eb58a9f..8ce8e1895e 100644
--- a/src/journal-remote/journal-upload-journal.c
+++ b/src/journal-remote/journal-upload-journal.c
@@ -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;
}
}
diff --git a/src/journal-remote/journal-upload.c b/src/journal-remote/journal-upload.c
index f2e9117f9f..4647cfdeb3 100644
--- a/src/journal-remote/journal-upload.c
+++ b/src/journal-remote/journal-upload.c
@@ -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])
diff --git a/src/journal-remote/journal-upload.h b/src/journal-remote/journal-upload.h
index a31735bd08..5711905f86 100644
--- a/src/journal-remote/journal-upload.h
+++ b/src/journal-remote/journal-upload.h
@@ -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)