[PATCH 3 of 3 STABLE] bookmark: also make bookmark cache depends of the changelog
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Mon May 20 05:05:07 EDT 2019
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at octobus.net>
# Date 1558339708 -7200
# Mon May 20 10:08:28 2019 +0200
# Branch stable
# Node ID 112ce0f35bec4a080a5598135ef873a283cc253a
# Parent 9718a6d6c37cd2789361943d9b0ba5d81f97427a
# EXP-Topic book-race
# Available At https://bitbucket.org/octobus/mercurial-devel/
# hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 112ce0f35bec
bookmark: also make bookmark cache depends of the changelog
Since the changelog is also used during the parsing of bookmark data, it should
be listed as a file cache dependency. This fix the race condition we just
introduced a test for.
This is a simple fix that might lead bookmark data to be invalidated more often
than necessary. We could have more complicated code to deal with this race in a
more "optimal" way. I feel it would be unsuitable for stable.
In addition, the performance impact of this is probably minimal and I don't
foresee the more advanced fix to actually be necessary.
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -1219,7 +1219,8 @@ class localrepository(object):
cls = repoview.newtype(self.unfiltered().__class__)
return cls(self, name, visibilityexceptions)
- @repofilecache('bookmarks', 'bookmarks.current')
+ @mixedrepostorecache(('bookmarks', ''), ('bookmarks.current', ''),
+ ('00changelog.i', 'store'))
def _bookmarks(self):
return bookmarks.bmstore(self)
diff --git a/tests/test-bookmarks-corner-case.t b/tests/test-bookmarks-corner-case.t
--- a/tests/test-bookmarks-corner-case.t
+++ b/tests/test-bookmarks-corner-case.t
@@ -212,7 +212,7 @@ Check result of the push.
| summary: A1
|
| o changeset: 3:f26c3b5167d1
- | | bookmark: book-B (false !)
+ | | bookmark: book-B
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: B1
@@ -235,4 +235,4 @@ Check result of the push.
$ hg -R bookrace-server book
book-A 4:9ce3b28c16de
- book-B 3:f26c3b5167d1 (false !)
+ book-B 3:f26c3b5167d1
More information about the Mercurial-devel
mailing list