From 3c9ab47c7d0e26fd22e1f42a198696b093629802 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 29 May 2019 20:56:32 +0000 Subject: searchidx: store indexlevel=medium as metadata And use it from Admin. It's easy to tell what indexlevel=basic is from unconfigured inboxes, but distinguishing between 'medium' and 'full' would require stat()-ing position.* files which is fragile and Xapian-implementation-dependent. So use the metadata facility of Xapian and store it in the main partition so Admin tools can deal better with unconfigured inboxes copied using generic tools like cp(1) or rsync(1). --- lib/PublicInbox/SearchIdx.pm | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'lib/PublicInbox/SearchIdx.pm') diff --git a/lib/PublicInbox/SearchIdx.pm b/lib/PublicInbox/SearchIdx.pm index b963805e..99856286 100644 --- a/lib/PublicInbox/SearchIdx.pm +++ b/lib/PublicInbox/SearchIdx.pm @@ -828,6 +828,14 @@ sub commit_txn_lazy { delete $self->{txn} or return; $self->{-inbox}->with_umask(sub { if (my $xdb = $self->{xdb}) { + + # store 'indexlevel=medium' in v2 part=0 and v1 (only part) + # This metadata is read by Admin::detect_indexlevel: + if (!$self->{partition} # undef or 0, not >0 + && $self->{indexlevel} eq 'medium') { + $xdb->set_metadata('indexlevel', 'medium'); + } + $xdb->commit_transaction; } $self->{over}->commit_lazy if $self->{over}; -- cgit v1.2.3-24-ge0c7