about summary refs log tree commit homepage
path: root/lib/PublicInbox/SearchIdxPart.pm
diff options
context:
space:
mode:
authorEric Wong (Contractor, The Linux Foundation) <e@80x24.org>2018-03-19 08:14:39 +0000
committerEric Wong (Contractor, The Linux Foundation) <e@80x24.org>2018-03-19 08:16:34 +0000
commiteb48e7d6675babdda9a36be1a490c29a2ccddbdc (patch)
treeeaa6056df3a6eabe9952b7265c9770de6b3575f1 /lib/PublicInbox/SearchIdxPart.pm
parentb20b8747256433b0b7b4d1ed5c415d2101044dda (diff)
downloadpublic-inbox-eb48e7d6675babdda9a36be1a490c29a2ccddbdc.tar.gz
We need to hide removals from anybody hitting the search engine.
Diffstat (limited to 'lib/PublicInbox/SearchIdxPart.pm')
-rw-r--r--lib/PublicInbox/SearchIdxPart.pm8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/PublicInbox/SearchIdxPart.pm b/lib/PublicInbox/SearchIdxPart.pm
index dd7ace67..c1660783 100644
--- a/lib/PublicInbox/SearchIdxPart.pm
+++ b/lib/PublicInbox/SearchIdxPart.pm
@@ -54,6 +54,14 @@ sub partition_worker_loop ($$$) {
                         $txn = undef;
                         print { $self->{skeleton}->{w} } "barrier $part\n" or
                                         die "write failed to skeleton: $!\n";
+                } elsif ($line =~ /\AD ([a-f0-9]{40,}) (.+)\n\z/s) {
+                        my ($oid, $mid) = ($1, $2);
+                        $xdb ||= $self->_xdb_acquire;
+                        if (!$txn) {
+                                $xdb->begin_transaction;
+                                $txn = 1;
+                        }
+                        $self->remove_by_oid($oid, $mid);
                 } else {
                         chomp $line;
                         my ($len, $artnum, $oid, $mid0) = split(/ /, $line);