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 BA1821F670 for ; Thu, 21 Oct 2021 21:10:32 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 00/15] use RENAME_NOREPLACE on Linux 3.15+ Date: Thu, 21 Oct 2021 21:10:17 +0000 Message-Id: <20211021211032.22666-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: What started off as a trivial, "something-to-do-before-bedtime" change several days ago (15/15) ended up forcing me to fix various hard-to-reproduce race conditions around Maildirs. Eventually, `schedtool -a 0x1 -e ...' helped me reproduce some races more easily (but still not with 100% reliability). t/lei-{watch,auto-watch,export-kw}.t should all be more reliable, now. There's also several other minor fixes I found along the way... Eric Wong (15): t/lei-{auto-watch,export-kw}: extra diagnostics on failure t/lei-import-maildir: rename fix (SR -> RS) t/lei-p2q: extra diagnostics lei/store: check for any unexpected process death lei note-event: drop unnecessary eval guard lei note-event: wq_io_do => wq_do lei_search: try harder to associate "lei index"-ed messages watch: check for {quit} before IDLE watch: remove redundant signal mask manipulation doc: lei-overview: add CAVEATS section lei note-event: clear_src on ENOENT dir_idle: treat IN_MOVED_FROM as a gone event lei: no Perl FileHandle for `undef' w/ ECONNRESET lei_mail_sync: mv_src: use transaction, check UNIQUE lei: use RENAME_NOREPLACE on Linux 3.15+ Documentation/lei-overview.pod | 5 ++++ MANIFEST | 1 + devel/syscall-list | 8 +++++- lib/PublicInbox/DirIdle.pm | 3 +- lib/PublicInbox/FakeInotify.pm | 3 ++ lib/PublicInbox/LEI.pm | 3 +- lib/PublicInbox/LeiExportKw.pm | 19 ++++--------- lib/PublicInbox/LeiMailSync.pm | 8 ++++-- lib/PublicInbox/LeiNoteEvent.pm | 13 +++++---- lib/PublicInbox/LeiSearch.pm | 13 ++++++++- lib/PublicInbox/LeiStore.pm | 16 +++++++---- lib/PublicInbox/LeiToMail.pm | 7 ++--- lib/PublicInbox/Syscall.pm | 49 +++++++++++++++++++++++++++++++-- lib/PublicInbox/Watch.pm | 13 +++------ t/lei-auto-watch.t | 3 +- t/lei-export-kw.t | 39 ++++++++++++++++++-------- t/lei-import-maildir.t | 2 +- t/lei-p2q.t | 2 +- t/rename_noreplace.t | 26 +++++++++++++++++ 19 files changed, 173 insertions(+), 60 deletions(-) create mode 100644 t/rename_noreplace.t