60 lines
2.3 KiB
Diff
60 lines
2.3 KiB
Diff
From b6849042d610da90d5821a03967d648d424f7864 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Georg=20M=C3=BCller?= <georgmueller@gmx.net>
|
|
Date: Thu, 20 Feb 2020 19:19:41 +0100
|
|
Subject: [PATCH] journalctl: show duplicate entries if they are from the same
|
|
file (#14898)
|
|
|
|
When having a service which intentionally outputs multiple equal lines,
|
|
all these messages might be inserted with the same timestamp.
|
|
|
|
journalctl has a mechanism to avoid duplicate lines, which might be in
|
|
different journal files.
|
|
|
|
This patch allows duplicate lines, if they are from the same file.
|
|
Reference: https://github.com/systemd/systemd/commit/b6849042d610da90d5821a03967d648d424f7864
|
|
Conflict: NA
|
|
---
|
|
src/journal/sd-journal.c | 8 +++++---
|
|
1 file changed, 5 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
|
|
index 3fa98dfda2..17998090f4 100644
|
|
--- a/src/journal/sd-journal.c
|
|
+++ b/src/journal/sd-journal.c
|
|
@@ -435,11 +435,12 @@ _public_ void sd_journal_flush_matches(sd_journal *j) {
|
|
detach_location(j);
|
|
}
|
|
|
|
-_pure_ static int compare_with_location(JournalFile *f, Location *l) {
|
|
+_pure_ static int compare_with_location(const JournalFile *f, const Location *l, const JournalFile *current_file) {
|
|
int r;
|
|
|
|
assert(f);
|
|
assert(l);
|
|
+ assert(current_file);
|
|
assert(f->location_type == LOCATION_SEEK);
|
|
assert(IN_SET(l->type, LOCATION_DISCRETE, LOCATION_SEEK));
|
|
|
|
@@ -448,7 +449,8 @@ _pure_ static int compare_with_location(JournalFile *f, Location *l) {
|
|
l->realtime_set &&
|
|
f->current_realtime == l->realtime &&
|
|
l->xor_hash_set &&
|
|
- f->current_xor_hash == l->xor_hash)
|
|
+ f->current_xor_hash == l->xor_hash &&
|
|
+ f != current_file)
|
|
return 0;
|
|
|
|
if (l->seqnum_set &&
|
|
@@ -787,7 +789,7 @@ static int next_beyond_location(sd_journal *j, JournalFile *f, direction_t direc
|
|
if (j->current_location.type == LOCATION_DISCRETE) {
|
|
int k;
|
|
|
|
- k = compare_with_location(f, &j->current_location);
|
|
+ k = compare_with_location(f, &j->current_location, j->current_file);
|
|
|
|
found = direction == DIRECTION_DOWN ? k > 0 : k < 0;
|
|
} else
|
|
--
|
|
2.19.1
|
|
|