};
}
-sub search ($;$$) {
- my ($self, $over_only, $ctx) = @_;
- my $srch = $self->{search} ||= eval {
+sub search {
+ my ($self) = @_;
+ my $srch = $self->{search} //= eval {
_cleanup_later($self);
require PublicInbox::Search;
PublicInbox::Search->new($self);
};
- ($over_only || eval { $srch->xdb }) ? $srch : do {
- $ctx and $ctx->{env}->{'psgi.errors'}->print(<<EOF);
-`$self->{name}' search went away unexpectedly
-EOF
- undef;
- };
+ (eval { $srch->xdb }) ? $srch : undef;
}
sub over {
$_[0]->{over} //= eval {
- my $srch = search($_[0], 1) or return;
+ my $srch = $_[0]->{search} //= eval {
+ _cleanup_later($_[0]);
+ require PublicInbox::Search;
+ PublicInbox::Search->new($_[0]);
+ };
my $over = PublicInbox::Over->new("$srch->{xpfx}/over.sqlite3");
$over->dbh; # may fail
$over;
};
}
+
sub try_cat {
my ($path) = @_;
my $rv = '';
PublicInbox::MboxGz::mbox_gz($ctx, \&all_ids_cb, 'all');
}
+sub gone ($$) {
+ my ($ctx, $what) = @_;
+ warn "W: `$ctx->{-inbox}->{inboxdir}' $what went away unexpectedly\n";
+ undef;
+}
+
sub results_cb {
my ($ctx) = @_;
- my $over = $ctx->{-inbox}->over or return;
+ my $over = $ctx->{-inbox}->over or return gone($ctx, 'over');
while (1) {
while (defined(my $num = shift(@{$ctx->{ids}}))) {
my $smsg = $over->get_art($num) or next;
return $smsg;
}
# refill result set
- my $srch = $ctx->{-inbox}->search(undef, $ctx) or return;
+ my $srch = $ctx->{-inbox}->search or return gone($ctx,'search');
my $mset = $srch->mset($ctx->{query}, $ctx->{qopts});
my $size = $mset->size or return;
$ctx->{qopts}->{offset} += $size;
sub results_thread_cb {
my ($ctx) = @_;
- my $over = $ctx->{-inbox}->over or return;
+ my $over = $ctx->{-inbox}->over or return gone($ctx, 'over');
while (1) {
while (defined(my $num = shift(@{$ctx->{xids}}))) {
my $smsg = $over->get_art($num) or next;
next if $over->expand_thread($ctx);
# refill result set
- my $srch = $ctx->{-inbox}->search(undef, $ctx) or return;
+ my $srch = $ctx->{-inbox}->search or return gone($ctx,'search');
my $mset = $srch->mset($ctx->{query}, $ctx->{qopts});
my $size = $mset->size or return;
$ctx->{qopts}->{offset} += $size;