]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/SearchIdx.pm
searchidx: v1: skip mid_clean on mid_mime results
[public-inbox.git] / lib / PublicInbox / SearchIdx.pm
index 44b05813f9a43e371068071ac9b2b666c275d555..fe00df53c268ffbc77bd4872fa6fb7ab5b4918e0 100644 (file)
@@ -58,6 +58,7 @@ sub new {
                ibx_ver => $version,
                indexlevel => $indexlevel,
        }, $class;
+       $self->{-set_indexlevel_once} = 1 if $indexlevel eq 'medium';
        $ibx->umask_prepare;
        if ($version == 1) {
                $self->{lock_path} = "$inboxdir/ssoma.lock";
@@ -496,13 +497,13 @@ sub index_git_blob_id {
 
 sub unindex_blob {
        my ($self, $mime) = @_;
-       my $mid = eval { mid_clean(mid_mime($mime)) };
+       my $mid = eval { mid_mime($mime) };
        $self->remove_message($mid) if defined $mid;
 }
 
 sub index_mm {
        my ($self, $mime) = @_;
-       my $mid = mid_clean(mid_mime($mime));
+       my $mid = mid_mime($mime);
        my $mm = $self->{mm};
        my $num;
 
@@ -533,7 +534,7 @@ sub index_mm {
 
 sub unindex_mm {
        my ($self, $mime) = @_;
-       $self->{mm}->mid_delete(mid_clean(mid_mime($mime)));
+       $self->{mm}->mid_delete(mid_mime($mime));
 }
 
 sub index_both {
@@ -842,20 +843,27 @@ sub begin_txn_lazy {
        });
 }
 
+# store 'indexlevel=medium' in v2 shard=0 and v1 (only one shard)
+# This metadata is read by Admin::detect_indexlevel:
+sub set_indexlevel {
+       my ($self) = @_;
+
+       if (!$self->{shard} && # undef or 0, not >0
+                       delete($self->{-set_indexlevel_once})) {
+               my $xdb = $self->{xdb};
+               my $level = $xdb->get_metadata('indexlevel');
+               if (!$level || $level ne 'medium') {
+                       $xdb->set_metadata('indexlevel', 'medium');
+               }
+       }
+}
+
 sub commit_txn_lazy {
        my ($self) = @_;
        delete $self->{txn} or return;
        $self->{-inbox}->with_umask(sub {
                if (my $xdb = $self->{xdb}) {
-
-                       # store 'indexlevel=medium' in v2 shard=0 and
-                       # v1 (only one shard)
-                       # This metadata is read by Admin::detect_indexlevel:
-                       if (!$self->{shard} # undef or 0, not >0
-                           && $self->{indexlevel} eq 'medium') {
-                               $xdb->set_metadata('indexlevel', 'medium');
-                       }
-
+                       set_indexlevel($self);
                        $xdb->commit_transaction;
                }
                $self->{over}->commit_lazy if $self->{over};