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 1B0A120248 for ; Fri, 19 Apr 2019 08:28:27 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [RFC] index: warn with info about the message as context Date: Fri, 19 Apr 2019 08:28:26 +0000 Message-Id: <20190419082826.3183-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: This can help users track down the source of warnings when presented with imperfect emails. While we're at it, make the __WARN__ callback in t/v2writable.t a no-op since we don't check for warnings, there. --- lib/PublicInbox/SearchIdxPart.pm | 7 +++++++ lib/PublicInbox/V2Writable.pm | 5 ++++- script/public-inbox-index | 3 +++ t/v2writable.t | 3 +-- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/PublicInbox/SearchIdxPart.pm b/lib/PublicInbox/SearchIdxPart.pm index 7fe2120..51d81a0 100644 --- a/lib/PublicInbox/SearchIdxPart.pm +++ b/lib/PublicInbox/SearchIdxPart.pm @@ -48,8 +48,15 @@ sub spawn_worker { sub partition_worker_loop ($$$$) { my ($self, $r, $part, $bnote) = @_; $0 = "pi-v2-partition[$part]"; + my $current_info = ''; + my $warn_cb = $SIG{__WARN__} || sub { print STDERR @_ }; + local $SIG{__WARN__} = sub { + chomp $current_info; + $warn_cb->("[$part] $current_info: ", @_); + }; $self->begin_txn_lazy; while (my $line = $r->getline) { + $current_info = $line; if ($line eq "commit\n") { $self->commit_txn_lazy; } elsif ($line eq "close\n") { diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm index 6829a34..87e8f3e 100644 --- a/lib/PublicInbox/V2Writable.pm +++ b/lib/PublicInbox/V2Writable.pm @@ -72,6 +72,7 @@ sub new { im => undef, # PublicInbox::Import parallel => 1, transact_bytes => 0, + current_info => '', xpfx => $xpfx, over => PublicInbox::OverIdx->new("$xpfx/over.sqlite3", 1), lock_path => "$dir/inbox.lock", @@ -949,8 +950,10 @@ sub index_sync { my $fh = $self->{reindex_pipe} = $git->popen(@cmd, $range); my $cmt; while (<$fh>) { + chomp; + $self->{current_info} = "$i.git $_"; if (/\A$x40$/o && !defined($cmt)) { - chomp($cmt = $_); + $cmt = $_; } elsif (/\A:\d{6} 100644 $x40 ($x40) [AM]\tm$/o) { $self->reindex_oid($mm_tmp, $D, $git, $1, $regen, $reindex); diff --git a/script/public-inbox-index b/script/public-inbox-index index 5adb6e7..2f810a5 100755 --- a/script/public-inbox-index +++ b/script/public-inbox-index @@ -85,6 +85,9 @@ sub index_dir { } } } + local $SIG{__WARN__} = sub { + print STDERR $v2w->{current_info}, ': ', @_; + }; $v2w->index_sync({ reindex => $reindex, prune => $prune }); } else { my $s = PublicInbox::SearchIdx->new($repo, 1); diff --git a/t/v2writable.t b/t/v2writable.t index f171417..2826513 100644 --- a/t/v2writable.t +++ b/t/v2writable.t @@ -253,10 +253,9 @@ EOF } { - my @warn; my $x = 'x'x250; my $y = 'y'x250; - local $SIG{__WARN__} = sub { push @warn, @_ }; + local $SIG{__WARN__} = sub {}; $mime->header_set('Subject', 'long mid'); $mime->header_set('Message-ID', "<$x>"); ok($im->add($mime), 'add excessively long Message-ID'); -- EW