+ $all->cat_async($oid, $unindex_oid, $req);
+ }
+ if (${$sync->{need_checkpoint}}) {
+ reindex_checkpoint($self, $sync);
+ }
+ }
+ $all->async_wait_all;
+ $self->update_last_commit($sync, $stk);
+}
+
+sub xapian_only {
+ my ($self, $opt, $sync, $art_beg) = @_;
+ my $seq = $opt->{sequential_shard};
+ $art_beg //= 0;
+ local $self->{parallel} = 0 if $seq;
+ $self->idx_init($opt); # acquire lock
+ if (my $art_end = $self->{ibx}->mm->max) {
+ $sync //= {
+ need_checkpoint => \(my $bool = 0),
+ -opt => $opt,
+ self => $self,
+ nr => \(my $nr = 0),
+ -regen_fmt => "%u/?\n",
+ };
+ $sync->{art_end} = $art_end;
+ if ($seq || !$self->{parallel}) {
+ my $shard_end = $self->{shards} - 1;
+ for my $i (0..$shard_end) {
+ last if $sync->{quit};
+ 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);