From 54c25a9cfb9a5eee44672b126eb75b9bb20aa957 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 5 Jul 2020 23:27:58 +0000 Subject: daemon: warn on missing blobs Since -edit and -purge should be rare and TOCTOU around them rarer still; missing {blobs} could be indicative of a real bug elsewhere. Warn on them. And I somehow ended up with 3 different field names for Inbox objects. Perhaps they'll be made consistent in the future. --- lib/PublicInbox/GzipFilter.pm | 1 + lib/PublicInbox/IMAP.pm | 1 + lib/PublicInbox/NNTP.pm | 1 + 3 files changed, 3 insertions(+) diff --git a/lib/PublicInbox/GzipFilter.pm b/lib/PublicInbox/GzipFilter.pm index 57344604..b5ad9eb8 100644 --- a/lib/PublicInbox/GzipFilter.pm +++ b/lib/PublicInbox/GzipFilter.pm @@ -170,6 +170,7 @@ sub async_blob_cb { # git->cat_async callback if (!defined($oid)) { # it's possible to have TOCTOU if an admin runs # public-inbox-(edit|purge), just move onto the next message + warn "E: $smsg->{blob} missing in $self->{-inbox}->{inboxdir}\n"; return $http->next_step($self->{async_next}); } $smsg->{blob} eq $oid or bail($self, "BUG: $smsg->{blob} != $oid"); diff --git a/lib/PublicInbox/IMAP.pm b/lib/PublicInbox/IMAP.pm index e0602143..d8c898f4 100644 --- a/lib/PublicInbox/IMAP.pm +++ b/lib/PublicInbox/IMAP.pm @@ -620,6 +620,7 @@ sub fetch_blob_cb { # called by git->cat_async via git_async_cat if (!defined($oid)) { # it's possible to have TOCTOU if an admin runs # public-inbox-(edit|purge), just move onto the next message + warn "E: $smsg->{blob} missing in $self->{ibx}->{inboxdir}\n"; return requeue_once($self); } else { $smsg->{blob} eq $oid or die "BUG: $smsg->{blob} != $oid"; diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm index 9d91544a..87ddf7a4 100644 --- a/lib/PublicInbox/NNTP.pm +++ b/lib/PublicInbox/NNTP.pm @@ -523,6 +523,7 @@ sub blob_cb { # called by git->cat_async via git_async_cat if (!defined($oid)) { # it's possible to have TOCTOU if an admin runs # public-inbox-(edit|purge), just move onto the next message + warn "E: $smsg->{blob} missing in $self->{ng}->{inboxdir}\n"; return $self->requeue; } elsif ($smsg->{blob} ne $oid) { $self->close; -- cgit v1.2.3-24-ge0c7