diff options
author | Lennart Poettering <lennart@poettering.net> | 2023-02-27 15:48:45 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2023-02-28 09:32:42 +0100 |
commit | 0631aabdf567e5ce87166827e9645bc18083a7c9 (patch) | |
tree | 75e521706186ef8dc2061e18186305ec22a198f0 /src/journal | |
parent | 32b0678c868b42ad68d383c8bf18fc2cdb1fbe95 (diff) | |
download | systemd-0631aabdf567e5ce87166827e9645bc18083a7c9.tar.gz |
journald: remove triplicate logging about failure to write log lines
Let's log exactly at one place about failed writing of log lines to
journal file: in shall_try_append_again().
Then, if we decide to suppress a retry-after-vacuum because we already
vacuumed anyway then say this explicitly as "supressed rotation",
because that's what we do here.
This removes triplicate logging about the same error, and logs exactly
once, plus optional one "suppressed rotation" message. (plus more debug
output). The triplicate logging was bad in particular because it had no
understanding of the actual error codes and just showed generic UNIX
error strings ("Not a XENIX named type file"). By relying on
shall_try_append_again() to do all logging we now get very clean error
strings for all conditions.
Fixes: #26496
Diffstat (limited to 'src/journal')
-rw-r--r-- | src/journal/journald-server.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index a6741ff8cc..23942f9575 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -969,20 +969,16 @@ static void server_write_to_journal( return; } - if (vacuumed || !shall_try_append_again(f->file, r)) { - log_ratelimit_error_errno(r, FAILED_TO_WRITE_ENTRY_RATELIMIT, - "Failed to write entry (%zu items, %zu bytes), ignoring: %m", - n, IOVEC_TOTAL_SIZE(iovec, n)); + log_debug_errno(r, "Failed to write entry to %s (%zu items, %zu bytes): %m", f->file->path, n, IOVEC_TOTAL_SIZE(iovec, n)); + + if (!shall_try_append_again(f->file, r)) + return; + if (vacuumed) { + log_ratelimit_warning_errno(r, JOURNAL_LOG_RATELIMIT, + "Suppressing rotation, as we already rotated immediately before write attempt. Giving up."); return; } - if (r == -E2BIG) - log_debug("Journal file %s is full, rotating to a new file", f->file->path); - else - log_ratelimit_info_errno(r, FAILED_TO_WRITE_ENTRY_RATELIMIT, - "Failed to write entry to %s (%zu items, %zu bytes), rotating before retrying: %m", - f->file->path, n, IOVEC_TOTAL_SIZE(iovec, n)); - server_rotate(s); server_vacuum(s, false); |