]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/V2Writable.pm
v2writable: compatibility with SWIG Xapian binding
[public-inbox.git] / lib / PublicInbox / V2Writable.pm
index 0a91a132bd93f9b373e400ae0d5a6c2afed06281..c926446c87ef0697057fdf1973228891ce2a8194 100644 (file)
@@ -1264,8 +1264,11 @@ sub xapian_only {
                $sync->{art_end} = $art_end;
                if ($seq || !$self->{parallel}) {
                        my $shard_end = $self->{shards} - 1;
-                       for (0..$shard_end) {
-                               index_xap_step($self, $sync, $art_beg + $_)
+                       for my $i (0..$shard_end) {
+                               index_xap_step($self, $sync, $art_beg + $i);
+                               if ($i != $shard_end) {
+                                       reindex_checkpoint($self, $sync);
+                               }
                        }
                } else { # parallel (maybe)
                        index_xap_step($self, $sync, $art_beg, 1);
@@ -1337,6 +1340,18 @@ sub index_sync {
                xapian_only($self, $opt, $sync, $art_beg);
        }
 
+       # --reindex on the command-line
+       if ($opt->{reindex} && !ref($opt->{reindex}) && $idxlevel ne 'basic') {
+               $self->lock_acquire;
+               my $s0 = PublicInbox::SearchIdx->new($self->{ibx}, 0, 0);
+               if (my $xdb = $s0->idx_acquire) {
+                       my $n = $xdb->get_metadata('has_threadid');
+                       $xdb->set_metadata('has_threadid', '1') if $n ne '1';
+               }
+               $s0->idx_release;
+               $self->lock_release;
+       }
+
        # reindex does not pick up new changes, so we rerun w/o it:
        if ($opt->{reindex}) {
                my %again = %$opt;