]> Sergey Matveev's repositories - public-inbox.git/blobdiff - Documentation/public-inbox-xcpdb.pod
treewide: run update-copyrights from gnulib for 2019
[public-inbox.git] / Documentation / public-inbox-xcpdb.pod
index 4ff51867367cb9ab1ce920fedf1b18e39ae19d18..149c8f78c738fc60a18e1f9def1e295d745f65eb 100644 (file)
@@ -1,24 +1,51 @@
 =head1 NAME
 
-public-inbox-xcpdb - copy Xapian DBs (for format upgrades)
+public-inbox-xcpdb - upgrade Xapian DB formats
 
 =head1 SYNOPSIS
 
-       public-inbox-xcpdb INBOX_DIR
+       public-inbox-xcpdb [OPTIONS] INBOX_DIR
 
 =head1 DESCRIPTION
 
-public-inbox-xcpdb is a wrapper for L<copydatabase(1)> for
+public-inbox-xcpdb is similar to L<copydatabase(1)> for
 upgrading to the latest database format supported by Xapian
-(e.g. "glass" or "honey").
+(e.g. "glass" or "honey"), but is designed to tolerate and
+recover from Xapian database modifications from
+L<public-inbox-watch(1)> or L<public-inbox-mda(1)>.
 
-It locks the inbox and prevents other processes such as
-L<public-inbox-watch(1)> and L<public-inbox-mda(1)> from
-writing while it operates.
+=head1 OPTIONS
 
-This is intended for upgrading the database format used by
-Xapian.  It DOES NOT upgrade the schema used by the
-public-inbox search interface (see L<public-inbox-index(1)>).
+=over
+
+=item --compact
+
+In addition to performing the copy operation, run L<xapian-compact(1)>
+on each Xapian shard after copying but before finalizing it.
+Compared to the cost of copying a Xapian database, compacting a
+Xapian database takes only around 5% of the time required to copy.
+
+Compared to L<public-inbox-compact(1)>, use of this option is
+preferable for gigantic inboxes where the coarse-grained lock
+currently required for L<public-inbox-compact(1)> can cause
+the compaction to take hours at-a-time.
+
+=item --reshard=N / -R N
+
+Reshard the Xapian database on a L<v2|public-inbox-v2-format(5)>
+inbox to C<N> shards .  Since L<xapian-compact(1)> is not suitable
+for merging, users can rely on this switch to reshard the
+existing Xapian database(s) to any positive value of C<N>.
+
+This is useful in case the Xapian DB was created with too few or
+too many shards given the capabilities of the current hardware.
+
+=item --blocksize / --no-full / --fuller
+
+These options are passed directly to L<xapian-compact(1)> when
+used with C<--compact>.
+
+=back
 
 =head1 ENVIRONMENT
 
@@ -29,10 +56,24 @@ public-inbox search interface (see L<public-inbox-index(1)>).
 The default config file, normally "~/.public-inbox/config".
 See L<public-inbox-config(5)>
 
+=item XAPIAN_FLUSH_THRESHOLD
+
+The number of documents to update before committing changes to
+disk.  This environment is handled directly by Xapian, refer to
+Xapian API documentation for more details.
+
+Default: 10000
+
 =back
 
 =head1 UPGRADING
 
+This tool is intended for admins upgrading Xapian search databases
+used by public-inbox, NOT users upgrading public-inbox itself.
+
+In particular, it DOES NOT upgrade the schema used by the
+PSGI search interface (see L<public-inbox-index(1)>).
+
 =head1 CONTACT
 
 Feedback welcome via plain-text mail to L<mailto:meta@public-inbox.org>
@@ -42,10 +83,10 @@ and L<http://hjrcffqmbrq6wope.onion/meta/>
 
 =head1 COPYRIGHT
 
-Copyright 2019 all contributors L<mailto:meta@public-inbox.org>
+Copyright 2019-2020 all contributors L<mailto:meta@public-inbox.org>
 
 License: AGPL-3.0+ L<https://www.gnu.org/licenses/agpl-3.0.txt>
 
 =head1 SEE ALSO
 
-L<copydatabase(1)>, L<public-inbox-index(1)>
+L<copydatabase(1)>, L<xapian-compact(1)>, L<public-inbox-index(1)>