repoview: stop recomputing cached key in all case
authorPierre-Yves David <pierre-yves.david@fb.com>
Fri, 04 Dec 2015 14:04:24 -0800
changeset 27257 49a76d3d43b1
parent 27256 45124eaab4e2
child 27258 beda2c9dbbff
repoview: stop recomputing cached key in all case As explained in the comment, we were computing the key of the cache value every time because of some obscure MQ test failure. I've dropped that code and ran the test again that failure is gone. I assume some transaction cleanup got rid of it. So we are dropping that code. This provide a significant speedup. Testing `hg log` on Mozilla-central this reduce the time spent on changelog cache validation by a third: before: 19.5s of 80s after: 12.2s of 69s (With stupid python profiler overhead)
mercurial/repoview.py
--- a/mercurial/repoview.py	Sat Dec 05 21:40:38 2015 -0800
+++ b/mercurial/repoview.py	Fri Dec 04 14:04:24 2015 -0800
@@ -305,16 +305,7 @@
         newkey = (len(unfichangelog), unfichangelog.tip(), hash(revs),
                   unfichangelog._delayed)
         if cl is not None:
-            # we need to check curkey too for some obscure reason.
-            # MQ test show a corruption of the underlying repo (in _clcache)
-            # without change in the cachekey.
-            oldfilter = cl.filteredrevs
-            try:
-                cl.filteredrevs = ()  # disable filtering for tip
-                curkey = (len(cl), cl.tip(), hash(oldfilter), cl._delayed)
-            finally:
-                cl.filteredrevs = oldfilter
-            if newkey != self._clcachekey or newkey != curkey:
+            if newkey != self._clcachekey:
                 cl = None
         # could have been made None by the previous if
         if cl is None: