From b517e2acccd21de1c2e88b21f0314410284745b1 Mon Sep 17 00:00:00 2001
From: "Eric Wong (Contractor, The Linux Foundation)" <e@80x24.org>
Date: Sun, 9 Jun 2019 02:51:37 +0000
Subject: [PATCH] v2writable: consolidate overview and indexing call

It's one ugly sub with lots of parameters, but it's better
than calling a bunch of ugly subs with lots of parameters;
as we'll be needing to call it again when reindexing for
message replacements.
---
 lib/PublicInbox/V2Writable.pm | 29 ++++++++++++++---------------
 1 file changed, 14 insertions(+), 15 deletions(-)

diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm
index a8c33ef4..a435814a 100644
--- a/lib/PublicInbox/V2Writable.pm
+++ b/lib/PublicInbox/V2Writable.pm
@@ -116,6 +116,18 @@ sub add {
 	});
 }
 
+# indexes a message, returns true if checkpointing is needed
+sub do_idx ($$$$$$$) {
+	my ($self, $msgref, $mime, $len, $num, $oid, $mid0) = @_;
+	$self->{over}->add_overview($mime, $len, $num, $oid, $mid0);
+	my $npart = $self->{partitions};
+	my $part = $num % $npart;
+	my $idx = idx_part($self, $part);
+	$idx->index_raw($len, $msgref, $num, $oid, $mid0, $mime);
+	my $n = $self->{transact_bytes} += $len;
+	$n >= (PublicInbox::SearchIdx::BATCH_BYTES * $npart);
+}
+
 sub _add {
 	my ($self, $mime, $check_cb) = @_;
 
@@ -141,13 +153,7 @@ sub _add {
 	$self->{last_commit}->[$self->{epoch_max}] = $cmt;
 
 	my ($oid, $len, $msgref) = @{$im->{last_object}};
-	$self->{over}->add_overview($mime, $len, $num, $oid, $mid0);
-	my $nparts = $self->{partitions};
-	my $part = $num % $nparts;
-	my $idx = $self->idx_part($part);
-	$idx->index_raw($len, $msgref, $num, $oid, $mid0, $mime);
-	my $n = $self->{transact_bytes} += $len;
-	if ($n > (PublicInbox::SearchIdx::BATCH_BYTES * $nparts)) {
+	if (do_idx($self, $msgref, $mime, $len, $num, $oid, $mid0)) {
 		$self->checkpoint;
 	}
 
@@ -772,15 +778,8 @@ sub reindex_oid ($$$$) {
 	}
 	$sync->{mm_tmp}->mid_delete($mid0) or
 		die "failed to delete <$mid0> for article #$num\n";
-
-	$self->{over}->add_overview($mime, $len, $num, $oid, $mid0);
-	my $nparts = $self->{partitions};
-	my $part = $num % $nparts;
-	my $idx = $self->idx_part($part);
-	$idx->index_raw($len, $msgref, $num, $oid, $mid0, $mime);
-	my $n = $self->{transact_bytes} += $len;
 	$sync->{nr}++;
-	if ($n > (PublicInbox::SearchIdx::BATCH_BYTES * $nparts)) {
+	if (do_idx($self, $msgref, $mime, $len, $num, $oid, $mid0)) {
 		$git->cleanup;
 		$sync->{mm_tmp}->atfork_prepare;
 		$self->done; # release lock
-- 
2.50.0