From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) 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.0 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id C13B71FAFE for ; Mon, 19 Mar 2018 08:15:05 +0000 (UTC) From: "Eric Wong (Contractor, The Linux Foundation)" To: meta@public-inbox.org Subject: [PATCH 26/27] v2writable: add DEBUG_DIFF env support Date: Mon, 19 Mar 2018 08:14:58 +0000 Message-Id: <20180319081459.10645-27-e@80x24.org> In-Reply-To: <20180319081459.10645-1-e@80x24.org> References: <20180319081459.10645-1-e@80x24.org> List-Id: This can help us track down some differences during import, if needed. --- lib/PublicInbox/V2Writable.pm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm index 8e1363e..30ca9ce 100644 --- a/lib/PublicInbox/V2Writable.pm +++ b/lib/PublicInbox/V2Writable.pm @@ -406,6 +406,26 @@ sub import_init { $self->{im} = $im; } +# XXX experimental +sub diff ($$$) { + my ($mid, $cur, $new) = @_; + use File::Temp qw(tempfile); + use PublicInbox::Spawn qw(spawn); + + my ($ah, $an) = tempfile('email-cur-XXXXXXXX'); + print $ah $cur->as_string or die "print: $!"; + close $ah or die "close: $!"; + my ($bh, $bn) = tempfile('email-new-XXXXXXXX'); + print $bh $new->as_string or die "print: $!"; + close $bh or die "close: $!"; + my $cmd = [ qw(diff -u), $an, $bn ]; + print STDERR "# MID conflict <$mid>\n"; + my $pid = spawn($cmd, undef, { 1 => 2 }); + defined $pid or die "diff failed to spawn $!"; + waitpid($pid, 0) == $pid or die "diff did not finish"; + unlink($an, $bn); +} + sub lookup_content { my ($self, $mime, $mid) = @_; my $ibx = $self->{-inbox}; @@ -427,6 +447,10 @@ sub lookup_content { $found = $smsg; return 0; # break out of loop } + + # XXX DEBUG_DIFF is experimental and may be removed + diff($mid, $cur, $mime) if $ENV{DEBUG_DIFF}; + 1; # continue }); $found; -- EW