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 220641F9F4 for ; Mon, 5 Apr 2021 10:27:53 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 5/5] lei q: fix auth IMAP --output with remote mboxrd Date: Mon, 5 Apr 2021 10:27:52 +0000 Message-Id: <20210405102752.6249-6-e@80x24.org> In-Reply-To: <20210405102752.6249-1-e@80x24.org> References: <20210405102752.6249-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: IMAP authentication info is only shared amongst lei2mail workers, so we must ensure all IMAP writes go through lei2mail workers even if we don't have to access the mail through git. This allows us to decouple the latency of the remote mboxrd from the latency of the IMAP --output at the expense of extra IPC overhead within our own processes. --- lib/PublicInbox/LeiOverview.pm | 14 ++++---------- lib/PublicInbox/LeiToMail.pm | 3 ++- lib/PublicInbox/LeiXSearch.pm | 4 ++-- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/lib/PublicInbox/LeiOverview.pm b/lib/PublicInbox/LeiOverview.pm index cdd9ee04..bfb8b143 100644 --- a/lib/PublicInbox/LeiOverview.pm +++ b/lib/PublicInbox/LeiOverview.pm @@ -195,7 +195,7 @@ sub _json_pretty { } sub ovv_each_smsg_cb { # runs in wq worker usually - my ($self, $lei, $ibxish) = @_; + my ($self, $lei) = @_; my ($json, $dedupe); if (my $pkg = $self->{json}) { $json = $pkg->new; @@ -208,17 +208,11 @@ sub ovv_each_smsg_cb { # runs in wq worker usually $dedupe->prepare_dedupe; } $lei->{ovv_buf} = \(my $buf = '') if !$l2m; - if ($l2m && !$ibxish) { # remote https?:// mboxrd - my $wcb = $l2m->write_cb($lei); - sub { - my ($smsg, undef, $eml) = @_; # no mitem in $_[1] - $wcb->(undef, $smsg, $eml); - }; - } elsif ($l2m && $l2m->{-wq_s1}) { + if ($l2m) { sub { - my ($smsg, $mitem) = @_; + my ($smsg, $mitem, $eml) = @_; $smsg->{pct} = get_pct($mitem) if $mitem; - $l2m->wq_io_do('write_mail', [], $smsg); + $l2m->wq_io_do('write_mail', [], $smsg, $eml); } } elsif ($self->{fmt} =~ /\A(concat)?json\z/ && $lei->{opt}->{pretty}) { my $EOR = ($1//'') eq 'concat' ? "\n}" : "\n},"; diff --git a/lib/PublicInbox/LeiToMail.pm b/lib/PublicInbox/LeiToMail.pm index 9411313b..70164e40 100644 --- a/lib/PublicInbox/LeiToMail.pm +++ b/lib/PublicInbox/LeiToMail.pm @@ -583,7 +583,8 @@ sub poke_dst { } sub write_mail { # via ->wq_io_do - my ($self, $smsg) = @_; + my ($self, $smsg, $eml) = @_; + return $self->{wcb}->(undef, $smsg, $eml) if $eml; $self->{lei}->{ale}->git->cat_async($smsg->{blob}, \&git_to_mail, [$self->{wcb}, $smsg]); } diff --git a/lib/PublicInbox/LeiXSearch.pm b/lib/PublicInbox/LeiXSearch.pm index 2b23e8e9..692d5e54 100644 --- a/lib/PublicInbox/LeiXSearch.pm +++ b/lib/PublicInbox/LeiXSearch.pm @@ -153,7 +153,7 @@ sub query_thread_mset { # for --threads return warn("$desc not indexed by Xapian\n") unless ($srch && $over); my $mo = { %{$lei->{mset_opt}} }; my $mset; - my $each_smsg = $lei->{ovv}->ovv_each_smsg_cb($lei, $ibxish); + my $each_smsg = $lei->{ovv}->ovv_each_smsg_cb($lei); my $can_kw = !!$ibxish->can('msg_keywords'); my $fl = $lei->{opt}->{threads} > 1 ? 1 : undef; do { @@ -196,7 +196,7 @@ sub query_mset { # non-parallel for non-"--threads" users for my $loc (locals($self)) { attach_external($self, $loc); } - my $each_smsg = $lei->{ovv}->ovv_each_smsg_cb($lei, $self); + my $each_smsg = $lei->{ovv}->ovv_each_smsg_cb($lei); do { $mset = $self->mset($mo->{qstr}, $mo); mset_progress($lei, 'xsearch', $mset->size,