about summary refs log tree commit homepage
path: root/lib/PublicInbox/V2Writable.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-01-03 02:06:17 +0000
committerEric Wong <e@80x24.org>2021-01-03 18:30:33 +0000
commitddb34f3e901c2e93e9b02dbac31961225b33379f (patch)
treeac7eec3a95e2a903f2b1bca4ccda303e07c337b6 /lib/PublicInbox/V2Writable.pm
parent02ff5cc7ecfe3e36cdd1898c4747c28d83de0e1a (diff)
downloadpublic-inbox-ddb34f3e901c2e93e9b02dbac31961225b33379f.tar.gz
We can more clearly distinguish between v1 and v2-only code
paths this way, and may be able to save a few cycles this way.
Diffstat (limited to 'lib/PublicInbox/V2Writable.pm')
-rw-r--r--lib/PublicInbox/V2Writable.pm8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm
index 6be95979..459c7e86 100644
--- a/lib/PublicInbox/V2Writable.pm
+++ b/lib/PublicInbox/V2Writable.pm
@@ -141,8 +141,10 @@ sub idx_shard ($$) {
 sub do_idx ($$$) {
         my ($self, $eml, $smsg) = @_;
         $self->{oidx}->add_overview($eml, $smsg);
-        my $idx = idx_shard($self, $smsg->{num});
-        $idx->index_eml($eml, $smsg);
+        if ($self->{-need_xapian}) {
+                my $idx = idx_shard($self, $smsg->{num});
+                $idx->index_eml($eml, $smsg);
+        }
         my $n = $self->{transact_bytes} += $smsg->{bytes};
         $n >= $self->{batch_bytes};
 }
@@ -267,6 +269,7 @@ sub _idx_init { # with_umask callback
         my $max = $self->{shards} - 1;
         my $idx = $self->{idx_shards} = [];
         push @$idx, PublicInbox::SearchIdxShard->new($self, $_) for (0..$max);
+        $self->{-need_xapian} = $idx->[0]->need_xapian;
 
         # SearchIdxShard may do their own flushing, so don't scale
         # until after forking
@@ -1129,6 +1132,7 @@ sub sync_prepare ($$) {
 sub unindex_oid_aux ($$$) {
         my ($self, $oid, $mid) = @_;
         my @removed = $self->{oidx}->remove_oid($oid, $mid);
+        return unless $self->{-need_xapian};
         for my $num (@removed) {
                 idx_shard($self, $num)->ipc_do('xdb_remove', $num);
         }