about summary refs log tree commit homepage
path: root/lib/PublicInbox/Import.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/Import.pm')
-rw-r--r--lib/PublicInbox/Import.pm14
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/PublicInbox/Import.pm b/lib/PublicInbox/Import.pm
index b8fa5c21..34738279 100644
--- a/lib/PublicInbox/Import.pm
+++ b/lib/PublicInbox/Import.pm
@@ -413,7 +413,19 @@ sub add {
                 $smsg->{blob} = $self->get_mark(":$blob");
                 $smsg->set_bytes($raw_email, $n);
                 if (my $oidx = delete $smsg->{-oidx}) { # used by LeiStore
-                        return if $oidx->blob_exists($smsg->{blob});
+                        my @docids = $oidx->blob_exists($smsg->{blob});
+                        my @vivify_xvmd;
+                        for my $id (@docids) {
+                                if (my $cur = $oidx->get_art($id)) {
+                                        # already imported if bytes > 0
+                                        return if $cur->{bytes} > 0;
+                                        push @vivify_xvmd, $id;
+                                } else {
+                                        warn "W: $smsg->{blob} ",
+                                                "#$id gone (bug?)\n";
+                                }
+                        }
+                        $smsg->{-vivify_xvmd} = \@vivify_xvmd;
                 }
         }
         my $ref = $self->{ref};