From 3a988efc28064954e64419bb0d368684fa7c7f20 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 31 Jul 2016 00:02:05 +0000 Subject: msgmap: fix use of transactions We want transactions to be the responsibility of the caller when possible; this fixes the potential for the msgmap to internally become inconsistent when using it from inside searchidx. --- lib/PublicInbox/SearchIdx.pm | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'lib/PublicInbox/SearchIdx.pm') diff --git a/lib/PublicInbox/SearchIdx.pm b/lib/PublicInbox/SearchIdx.pm index c2bf9a2d..3f2643c6 100644 --- a/lib/PublicInbox/SearchIdx.pm +++ b/lib/PublicInbox/SearchIdx.pm @@ -369,18 +369,18 @@ sub _index_sync { # Common case is the indexes are synced, # we only need to run git-log once: $lx = $self->rlog($range, *index_both, *unindex_both); - $mm->{dbh}->commit; if (defined $lx) { $db->set_metadata('last_commit', $lx); $mm->last_commit($lx); } + $mm->{dbh}->commit; } else { # dumb case, msgmap and xapian are out-of-sync # do not care for performance: my $r = $lm eq '' ? $head : "$lm..$head"; $lm = $self->rlog($r, *index_mm, *unindex_mm); - $mm->{dbh}->commit; $mm->last_commit($lm) if defined $lm; + $mm->{dbh}->commit; $lx = $self->rlog($range, *index_mm2, *unindex_mm2); $db->set_metadata('last_commit', $lx) if defined $lx; @@ -390,12 +390,7 @@ sub _index_sync { $lx = $self->rlog($range, *index_blob, *unindex_blob); $db->set_metadata('last_commit', $lx) if defined $lx; } - if ($@) { - $db->cancel_transaction; - $mm->{dbh}->rollback if $mm; - } else { - $db->commit_transaction; - } + $db->commit_transaction; } # this will create a ghost as necessary -- cgit v1.2.3-24-ge0c7