dumping ground for random patches and texts
 help / color / mirror / Atom feed
* [PATCH] xap_helper: unconditionally reopen DBs on reuse
@ 2024-05-07 19:08 Eric Wong
  0 siblings, 0 replies; only message in thread
From: Eric Wong @ 2024-05-07 19:08 UTC (permalink / raw)
  To: spew

Reopening Xapian DBs is a fairly cheap operation, so just do it
to ensure we always get the latest changes.
---
 lib/PublicInbox/XapHelper.pm | 4 +++-
 lib/PublicInbox/xap_helper.h | 1 +
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/lib/PublicInbox/XapHelper.pm b/lib/PublicInbox/XapHelper.pm
index 099bc4fe..c9957f64 100644
--- a/lib/PublicInbox/XapHelper.pm
+++ b/lib/PublicInbox/XapHelper.pm
@@ -191,8 +191,9 @@ sub dispatch {
 		or return;
 	my $dirs = delete $req->{d} or die 'no -d args';
 	my $key = join("\0", @$dirs);
+	my $new;
 	$req->{srch} = $SRCH{$key} //= do {
-		my $new = { qp_flags => $PublicInbox::Search::QP_FLAGS };
+		$new = { qp_flags => $PublicInbox::Search::QP_FLAGS };
 		my $first = shift @$dirs;
 		my $slow_phrase = -f "$first/iamchert";
 		$new->{xdb} = $X->{Database}->new($first);
@@ -207,6 +208,7 @@ sub dispatch {
 		$new->{qp} = $new->qparse_new;
 		$new;
 	};
+	$req->{srch}->{xdb}->reopen unless $new;
 	$req->{Q} && !$req->{srch}->{qp_extra_done} and
 		srch_init_extra $req;
 	my $timeo = $req->{K};
diff --git a/lib/PublicInbox/xap_helper.h b/lib/PublicInbox/xap_helper.h
index bdc1c5b1..a30a8768 100644
--- a/lib/PublicInbox/xap_helper.h
+++ b/lib/PublicInbox/xap_helper.h
@@ -712,6 +712,7 @@ static void dispatch(struct req *req)
 	req->srch = *s;
 	if (req->srch != kbuf.srch) { // reuse existing
 		free_srch(kbuf.srch);
+		req->srch->db->reopen();
 	} else if (!srch_init(req)) {
 		assert(kbuf.srch == *((struct srch **)tfind(
 					kbuf.srch, &srch_tree, srch_cmp)));

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2024-05-07 19:08 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-07 19:08 [PATCH] xap_helper: unconditionally reopen DBs on reuse Eric Wong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).