X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FSearch.pm;h=88c8dc70e17c3bedf3883f07555894b6c54eb7c3;hb=7375e589c165cd0c5bae2d70ff8e279fb76216a2;hp=d861cf471932aacddff0915f6ede3e8ec103fd6e;hpb=792c643ba76e8b06ae17d3653402d381f59857c2;p=public-inbox.git diff --git a/lib/PublicInbox/Search.pm b/lib/PublicInbox/Search.pm index d861cf47..88c8dc70 100644 --- a/lib/PublicInbox/Search.pm +++ b/lib/PublicInbox/Search.pm @@ -1,4 +1,4 @@ -# Copyright (C) 2015-2018 all contributors +# Copyright (C) 2015-2019 all contributors # License: AGPL-3.0+ # based on notmuch, but with no concept of folders, files or flags # @@ -54,6 +54,9 @@ use constant { # 13 - fix threading for empty References/In-Reply-To # (commit 83425ef12e4b65cdcecd11ddcb38175d4a91d5a0) # 14 - fix ghost root vivification + # 15 - see public-inbox-v2-format(5) + # further bumps likely unnecessary, we'll suggest in-place + # "--reindex" use for further fixes and tweaks SCHEMA_VERSION => 15, }; @@ -126,14 +129,14 @@ chomp @HELP; sub xdir ($;$) { my ($self, $rdonly) = @_; if ($self->{version} == 1) { - "$self->{mainrepo}/public-inbox/xapian" . SCHEMA_VERSION; + "$self->{inboxdir}/public-inbox/xapian" . SCHEMA_VERSION; } else { - my $dir = "$self->{mainrepo}/xap" . SCHEMA_VERSION; + my $dir = "$self->{inboxdir}/xap" . SCHEMA_VERSION; return $dir if $rdonly; - my $part = $self->{partition}; - defined $part or die "partition not given"; - $dir .= "/$part"; + my $shard = $self->{shard}; + defined $shard or die "shard not given"; + $dir .= "/$shard"; } } @@ -143,15 +146,15 @@ sub _xdb ($) { my ($xdb, $slow_phrase); my $qpf = \($self->{qp_flags} ||= $QP_FLAGS); if ($self->{version} >= 2) { - foreach my $part (<$dir/*>) { - -d $part && $part =~ m!/\d+\z! or next; - my $sub = Search::Xapian::Database->new($part); + foreach my $shard (<$dir/*>) { + -d $shard && $shard =~ m!/[0-9]+\z! or next; + my $sub = Search::Xapian::Database->new($shard); if ($xdb) { $xdb->add_database($sub); } else { $xdb = $sub; } - $slow_phrase ||= -f "$part/iamchert"; + $slow_phrase ||= -f "$shard/iamchert"; } } else { $slow_phrase = -f "$dir/iamchert"; @@ -170,17 +173,12 @@ sub xdb ($) { } sub new { - my ($class, $mainrepo, $altid) = @_; - my $version = 1; - my $ibx = $mainrepo; - if (ref $ibx) { - $version = $ibx->{version} || 1; - $mainrepo = $ibx->{mainrepo}; - } + my ($class, $ibx) = @_; + ref $ibx or die "BUG: expected PublicInbox::Inbox object: $ibx"; my $self = bless { - mainrepo => $mainrepo, - altid => $altid, - version => $version, + inboxdir => $ibx->{inboxdir}, + altid => $ibx->{altid}, + version => $ibx->{version} // 1, }, $class; my $dir = xdir($self, 1); $self->{over_ro} = PublicInbox::Over->new("$dir/over.sqlite3"); @@ -228,7 +226,9 @@ sub retry_reopen { warn "reopen try #$i on $@\n"; reopen($self); } else { - warn "ref: ", ref($@), "\n"; + # let caller decide how to spew, because ExtMsg queries + # get wonky and trigger: + # "something terrible happened at .../Xapian/Enquire.pm" die; } }