From 7edd1db87d06c3ca2e8b994e0cad7a3cc95f91cd Mon Sep 17 00:00:00 2001 From: Sven Panne Date: Tue, 22 Oct 2024 14:06:43 +0200 Subject: [PATCH] Added tiny optimization Change-Id: I596613115c5aa16a915610d2b2844c3237ad399f --- packages/livestatus/src/TableLog.cc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/livestatus/src/TableLog.cc b/packages/livestatus/src/TableLog.cc index aa9167fa96c..7455a5e8a98 100644 --- a/packages/livestatus/src/TableLog.cc +++ b/packages/livestatus/src/TableLog.cc @@ -216,9 +216,20 @@ void for_each_log_entry( while (it_entries != entries->begin()) { --it_entries; const auto &entry = *it_entries->second; - if (entry.time() < since || !process_log_entry(entry)) { + if (entry.time() < since) { + // The current log line is older than requested, so stop + // processing all log entries and log files. return; } + + // NOTE: The test() call below is just an optimization, + // Logfile::getEntriesFor() can return more than it is being + // asked for. :-/ + if (log_filter.restrictions.log_entry_classes.test( + static_cast(entry.log_class())) && + !process_log_entry(entry)) { + return; // The callback has requested to stop processing. + } } if (it_logs == log_files.begin()) { break; // this was the oldest one