From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 3CD951F5AE for ; Mon, 19 Jul 2021 08:59:35 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 0/2] lei Maildir inotify/kevent support Date: Mon, 19 Jul 2021 08:59:33 +0000 Message-Id: <20210719085935.1986-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: One of the most important features of lei that drove the decision towards its daemonic architecture. My brain still has some wires loose or crossed :< So I've had a very tough time mapping out the internal design for this that could deal with rename() storms and reduce the need to handle IN_Q_OVERFLOW conditions. Eventually, introducing a new concept in the form of LeiNoteEvent helped my crippled brain make the necessary connections and cobble together something that seems halfway working. LeiNoteEvent represents a significant conceptual shift in lei internals. Having long-lived workers is closer to my original vision of how lei internals would've been. That old model had some major weaknesses, however: 1) error handling/reporting back to the CLI required FD passing (and large-scale FD passing got confusing pretty quick) 2) excessive FD passing overflowed default kernel buffers and made parallelism difficult for unprivileged users Since there's no CLI to report errors to with internal notifications, we don't have FDs to pass. Of course, that means we can lose errors right now, but it's probably not a big deal for (mostly) innocuous keyword changes. Eric Wong (2): config: s/_one_val/get_1/ for public use lei: start implementing inotify Maildir support MANIFEST | 6 ++ lib/PublicInbox/Config.pm | 6 +- lib/PublicInbox/DirIdle.pm | 17 +++++ lib/PublicInbox/LEI.pm | 116 ++++++++++++++++++++++++++--- lib/PublicInbox/LeiAddWatch.pm | 41 ++++++++++ lib/PublicInbox/LeiInput.pm | 1 + lib/PublicInbox/LeiLsWatch.pm | 15 ++++ lib/PublicInbox/LeiNoteEvent.pm | 124 +++++++++++++++++++++++++++++++ lib/PublicInbox/LeiSearch.pm | 2 +- lib/PublicInbox/LeiSelfSocket.pm | 45 +++++++++++ lib/PublicInbox/LeiWatch.pm | 13 ++++ t/lei-watch.t | 49 ++++++++++++ 12 files changed, 419 insertions(+), 16 deletions(-) create mode 100644 lib/PublicInbox/LeiAddWatch.pm create mode 100644 lib/PublicInbox/LeiLsWatch.pm create mode 100644 lib/PublicInbox/LeiNoteEvent.pm create mode 100644 lib/PublicInbox/LeiSelfSocket.pm create mode 100644 lib/PublicInbox/LeiWatch.pm create mode 100644 t/lei-watch.t