summaryrefslogtreecommitdiff
path: root/src/journal
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2023-02-27 15:48:45 +0100
committerLennart Poettering <lennart@poettering.net>2023-02-28 09:32:42 +0100
commit0631aabdf567e5ce87166827e9645bc18083a7c9 (patch)
tree75e521706186ef8dc2061e18186305ec22a198f0 /src/journal
parent32b0678c868b42ad68d383c8bf18fc2cdb1fbe95 (diff)
downloadsystemd-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.c18
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);