[PATCH 1 of 6] revlog: make clearcaches() more effective

Gregory Szorc gregory.szorc at gmail.com
Mon Dec 21 04:04:09 UTC 2015


# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1450662500 28800
#      Sun Dec 20 17:48:20 2015 -0800
# Node ID 888293905f3c109d110f45f123bea3273c5ca6a9
# Parent  5df74b2f296df7f44a08106df4f9dd97a5aa726a
revlog: make clearcaches() more effective

clearcaches() was added several years ago in e8d37b78acfb as part
of implementing a perf command. Since revlog instances have many caches
and since the spirit of this mostly unused method is to facilitate
performance testing, I think it's appropriate for all the revlog's
caches to get cleared when it is called.

diff --git a/mercurial/revlog.py b/mercurial/revlog.py
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -334,16 +334,21 @@ class revlog(object):
     def hasnode(self, node):
         try:
             self.rev(node)
             return True
         except KeyError:
             return False
 
     def clearcaches(self):
+        self._cache = None
+        self._basecache = None
+        self._chunkcache = (0, '')
+        self._pcache = {}
+
         try:
             self._nodecache.clearcaches()
         except AttributeError:
             self._nodecache = {nullid: nullrev}
             self._nodepos = None
 
     def rev(self, node):
         try:


More information about the Mercurial-devel mailing list