From: Zbigniew Jędrzejewski-Szmek Date: Fri, 9 Feb 2018 19:10:00 +0000 (+0100) Subject: Revert "Periodically call sd_journal_process in journalctl" (#8147) X-Git-Tag: v238~116 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aa9122bf3d52fb7e4e7638d1e8e3a3c5cc3c2694;p=thirdparty%2Fsystemd.git Revert "Periodically call sd_journal_process in journalctl" (#8147) This reverts commit 992149c07e3ecfbfe4067641e92a6923e7aacda4. https://github.com/systemd/systemd/pull/8144#issuecomment-364464627 $ (set -o pipefail; sudo ./build/journalctl --no-pager | wc -l; echo $?) Failed to process inotify events: Bad file descriptor 1025 1 --- diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 2cf35f7e669..bb9cfb6dc4d 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -81,8 +81,6 @@ #define DEFAULT_FSS_INTERVAL_USEC (15*USEC_PER_MINUTE) -#define PROCESS_INOTIFY_INTERVAL 1024 /* Every 1,024 messages processed */ - #if HAVE_PCRE2 DEFINE_TRIVIAL_CLEANUP_FUNC(pcre2_match_data*, pcre2_match_data_free); DEFINE_TRIVIAL_CLEANUP_FUNC(pcre2_code*, pcre2_code_free); @@ -2641,32 +2639,6 @@ int main(int argc, char *argv[]) { goto finish; n_shown++; - - /* If journalctl take a long time to process messages, and - * during that time journal file rotation occurs, a journalctl - * client will keep those rotated files open until it calls - * sd_journal_process(), which typically happens as a result - * of calling sd_journal_wait() below in the "following" case. - * By periodically calling sd_journal_process() during the - * processing loop we shrink the window of time a client - * instance has open file descriptors for rotated (deleted) - * journal files. - * - * FIXME: This change does not appear to solve the case of a - * "paused" output stream. If somebody is using `journalctl | less` - * and pauses the output, then without a background thread - * periodically listening for inotify delete events and cleaning - * up, journal logs will eventually stop flowing in cases where - * a journal client with enough open files causes the "free" - * disk space threshold to be crossed. - */ - if ((n_shown % PROCESS_INOTIFY_INTERVAL) == 0) { - r = sd_journal_process(j); - if (r < 0) { - log_error_errno(r, "Failed to process inotify events: %m"); - goto finish; - } - } } if (!arg_follow) {