From patchwork Mon May 20 09:05:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [3, of, 3, STABLE] bookmark: also make bookmark cache depends of the changelog From: Pierre-Yves David X-Patchwork-Id: 40142 Message-Id: <112ce0f35bec4a080a55.1558343107@nodosa.octopoid.net> To: mercurial-devel@mercurial-scm.org Date: Mon, 20 May 2019 11:05:07 +0200 # HG changeset patch # User Pierre-Yves David # 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