- my $ekey = $ibx->{-gc_eidx_key} // $ibx->eidx_key;
- $idx->ipc_do('remove_eidx_info', $docid, $ekey, $eml);
- $sync->{self}->{oidx}->eidxq_add($docid); # yes, add
+ if ($ibx) {
+ my $ekey = $ibx->{-gc_eidx_key} // $ibx->eidx_key;
+ my $idx = $sync->{self}->idx_shard($docid);
+ $idx->ipc_do('remove_eidx_info', $docid, $ekey, $eml);
+ } # else: we can't remove_eidx_info in reindex-only path
+
+ # replace invalidated blob ASAP with something which should be
+ # readable since we may commit the transaction on checkpoint.
+ # eidxq processing will re-apply boost
+ $smsg //= $sync->{self}->{oidx}->get_art($docid);
+ my $hex = unpack('H*', $oidbin);
+ if ($smsg && $smsg->{blob} eq $hex) {
+ $xr3->[0] =~ /:([a-f0-9]{40,}+)\z/ or
+ die "BUG: xref $xr3->[0] has no OID";
+ $sync->{self}->{oidx}->update_blob($smsg, $1);
+ }
+ # yes, add, we'll need to re-apply boost
+ $sync->{self}->{oidx}->eidxq_add($docid);