about summary refs log tree commit homepage
path: root/lib/PublicInbox/Import.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-03-21 15:50:45 +0600
committerEric Wong <e@80x24.org>2021-03-21 10:35:11 +0000
commit47d21e78be57a8f4615be5872e08ec4539423d1f (patch)
treeaac2f06ea9c24b4a616702e849bcbaf024597dc5 /lib/PublicInbox/Import.pm
parent076543017b7646a7324156ed5d5245d467d53c1c (diff)
downloadpublic-inbox-47d21e78be57a8f4615be5872e08ec4539423d1f.tar.gz
Keyword storage for external-only messages was preventing
messages from being explicitly imported.  Teach lei_store
to vivify keyword-only entries into fully-indexed messages
on import.
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};