From: Eric Wong <e@80x24.org>
To: spew@80x24.org
Subject: [PATCH 2/8] searchidx: do not release Xapian lock while (only) Msgmap is indexing
Date: Sat, 13 Aug 2016 23:53:14 +0000 [thread overview]
Message-ID: <20160813235320.10831-2-e@80x24.org> (raw)
In-Reply-To: <20160813235320.10831-1-e@80x24.org>
SQLite might index quickly, so we hold the lock used by Xapian
for the duration. This probably needs to be reworked entirely,
actually.
---
lib/PublicInbox/SearchIdx.pm | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/lib/PublicInbox/SearchIdx.pm b/lib/PublicInbox/SearchIdx.pm
index 0eb07a1..f8155ec 100644
--- a/lib/PublicInbox/SearchIdx.pm
+++ b/lib/PublicInbox/SearchIdx.pm
@@ -436,19 +436,24 @@ sub _index_sync {
my $mm = _msgmap_init($self);
my $dbh = $mm->{dbh} if $mm;
+ my $mm_only;
my $cb = sub {
my ($commit, $more) = @_;
if ($dbh) {
$mm->last_commit($commit) if $commit;
$dbh->commit;
}
- $xdb->set_metadata($mkey, $commit) if $mkey && $commit;
- $xdb->commit_transaction;
- $xdb = _xdb_release($self);
+ if (!$mm_only) {
+ $xdb->set_metadata($mkey, $commit) if $mkey && $commit;
+ $xdb->commit_transaction;
+ $xdb = _xdb_release($self);
+ }
# let another process do some work... <
if ($more) {
- $xdb = _xdb_acquire($self);
- $xdb->begin_transaction;
+ if (!$mm_only) {
+ $xdb = _xdb_acquire($self);
+ $xdb->begin_transaction;
+ }
$dbh->begin_work if $dbh;
}
};
@@ -472,14 +477,13 @@ sub _index_sync {
my $mkey_prev = $mkey;
$mkey = undef; # ignore xapian, for now
my $mlog = _git_log($self, $r);
+ $mm_only = 1;
rlog($self, $mlog, *index_mm, *unindex_mm, $cb);
- $mlog = undef;
+ $mm_only = $mlog = undef;
# now deal with Xapian
$mkey = $mkey_prev;
$dbh = undef;
- $xdb = _xdb_acquire($self);
- $xdb->begin_transaction;
rlog($self, $xlog, *index_mm2, *unindex_mm2, $cb);
}
} else {
--
EW
next prev parent reply other threads:[~2016-08-13 23:53 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-13 23:53 [PATCH 1/8] import_slrnspool: reimplement using fast-import Eric Wong
2016-08-13 23:53 ` Eric Wong [this message]
2016-08-13 23:53 ` [PATCH 3/8] www: do not unecessarily escape some chars in paths Eric Wong
2016-08-13 23:53 ` [PATCH 4/8] www: do not double-clean Message-IDs from internal DBs Eric Wong
2016-08-13 23:53 ` [PATCH 5/8] mid: no wide characters for sha1_hex Eric Wong
2016-08-13 23:53 ` [PATCH 6/8] view: allow for missing In-Reply-To mapping Eric Wong
2016-08-13 23:53 ` [PATCH 7/8] view: remove redundant pre closing tag Eric Wong
2016-08-13 23:53 ` [PATCH 8/8] squash Eric Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160813235320.10831-2-e@80x24.org \
--to=e@80x24.org \
--cc=spew@80x24.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).