about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
authorEric Wong (Contractor, The Linux Foundation) <e@80x24.org>2018-04-18 09:13:14 +0000
committerEric Wong (Contractor, The Linux Foundation) <e@80x24.org>2018-04-18 09:14:18 +0000
commitf86a714ac141e257b9bd50be81065e670cfb718b (patch)
tree17a8c85571a8bf6837999fb8a888ff769f0488c0 /lib
parent017fed7bc4d33ac474a19356994be5bd0bfe68ba (diff)
downloadpublic-inbox-f86a714ac141e257b9bd50be81065e670cfb718b.tar.gz
Searching across different inboxes is expensive without
SQLite (or Xapian) installed, so avoid doing expensive tree
lookups in git.  Since SQLite is required for Xapian
support anyways, we won't need to check Xapian, either.

Sites without SQLite installed will simply 404 if somebody
requests a message which isn't in the current inbox.
Diffstat (limited to 'lib')
-rw-r--r--lib/PublicInbox/ExtMsg.pm39
-rw-r--r--lib/PublicInbox/Inbox.pm5
2 files changed, 7 insertions, 37 deletions
diff --git a/lib/PublicInbox/ExtMsg.pm b/lib/PublicInbox/ExtMsg.pm
index c71510f5..a6f516df 100644
--- a/lib/PublicInbox/ExtMsg.pm
+++ b/lib/PublicInbox/ExtMsg.pm
@@ -31,30 +31,19 @@ sub ext_msg {
         my $cur = $ctx->{-inbox};
         my $mid = $ctx->{mid};
 
-        eval { require PublicInbox::Search };
-        my $have_xap = $@ ? 0 : 1;
-        my (@nox, @ibx, @found);
+        eval { require PublicInbox::Msgmap };
+        my $have_mm = $@ ? 0 : 1;
+        my (@ibx, @found);
 
         $ctx->{www}->{pi_config}->each_inbox(sub {
                 my ($other) = @_;
                 return if $other->{name} eq $cur->{name} || !$other->base_url;
 
-                my $s = $other->search;
-                if (!$s) {
-                        push @nox, $other;
-                        return;
-                }
-
-                # try to find the URL with Xapian to avoid forking
-                my $doc_id = eval { $s->find_first_doc_id('Q' . $mid) };
-                if ($@) {
-                        # xapian not configured properly for this repo
-                        push @nox, $other;
-                        return;
-                }
+                my $mm = $other->mm or return;
 
-                # maybe we found it!
-                if (defined $doc_id) {
+                # try to find the URL with Msgmap to avoid forking
+                my $num = $mm->num_for($mid);
+                if (defined $num) {
                         push @found, $other;
                 } else {
                         # no point in trying the fork fallback if we
@@ -66,20 +55,6 @@ sub ext_msg {
 
         return exact($ctx, \@found, $mid) if @found;
 
-        # Xapian not installed or configured for some repos,
-        # do a full MID check (this is expensive...):
-        if (@nox) {
-                my $path = mid2path($mid);
-                foreach my $other (@nox) {
-                        my (undef, $type, undef) = $other->path_check($path);
-
-                        if ($type && $type eq 'blob') {
-                                push @found, $other;
-                        }
-                }
-        }
-        return exact($ctx, \@found, $mid) if @found;
-
         # fall back to partial MID matching
         my $n_partial = 0;
         my @partial;
diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm
index f71493a0..706089ca 100644
--- a/lib/PublicInbox/Inbox.pm
+++ b/lib/PublicInbox/Inbox.pm
@@ -290,11 +290,6 @@ sub smsg_mime {
         }
 }
 
-sub path_check {
-        my ($self, $path) = @_;
-        git($self)->check('HEAD:'.$path);
-}
-
 sub mid2num($$) {
         my ($self, $mid) = @_;
         my $mm = mm($self) or return;