mercurial/revlog.py
changeset 51096 8ec2de9c6770
parent 51095 30f458fc59e9
child 51097 be56d322ee89
--- a/mercurial/revlog.py	Thu Oct 19 03:07:39 2023 +0200
+++ b/mercurial/revlog.py	Thu Oct 19 03:33:59 2023 +0200
@@ -390,6 +390,8 @@
 
         # revlog header -> revlog compressor
         self._decompressors = {}
+        # 3-tuple of (node, rev, text) for a raw revision.
+        self._revisioncache = None
 
     @property
     def index_file(self):
@@ -1023,8 +1025,6 @@
             self.delta_config = DeltaConfig()
         self.delta_config.upper_bound_comp = upperboundcomp
 
-        # 3-tuple of (node, rev, text) for a raw revision.
-        self._revisioncache = None
         # Maps rev to chain base rev.
         self._chainbasecache = util.lrucachedict(100)
 
@@ -1665,7 +1665,7 @@
 
     def clearcaches(self):
         """Clear in-memory caches"""
-        self._revisioncache = None
+        self._inner._revisioncache = None
         self._chainbasecache.clear()
         self._inner._segmentfile.clear_cache()
         self._inner._segmentfile_sidedata.clear_cache()
@@ -2571,7 +2571,7 @@
         if validatehash:
             self.checkhash(text, node, rev=rev)
         if not validated:
-            self._revisioncache = (node, rev, rawtext)
+            self._inner._revisioncache = (node, rev, rawtext)
 
         return text
 
@@ -2588,21 +2588,21 @@
 
         # Check if we have the entry in cache
         # The cache entry looks like (node, rev, rawtext)
-        if self._revisioncache:
-            if self._revisioncache[0] == node:
-                return (rev, self._revisioncache[2], True)
-            cachedrev = self._revisioncache[1]
+        if self._inner._revisioncache:
+            if self._inner._revisioncache[0] == node:
+                return (rev, self._inner._revisioncache[2], True)
+            cachedrev = self._inner._revisioncache[1]
 
         if rev is None:
             rev = self.rev(node)
 
         chain, stopped = self._inner._deltachain(rev, stoprev=cachedrev)
         if stopped:
-            basetext = self._revisioncache[2]
+            basetext = self._inner._revisioncache[2]
 
         # drop cache to save memory, the caller is expected to
-        # update self._revisioncache after validating the text
-        self._revisioncache = None
+        # update self._inner._revisioncache after validating the text
+        self._inner._revisioncache = None
 
         targetsize = None
         rawsize = self.index[rev][2]
@@ -2684,8 +2684,11 @@
                 # revision data is accessed. But this case should be rare and
                 # it is extra work to teach the cache about the hash
                 # verification state.
-                if self._revisioncache and self._revisioncache[0] == node:
-                    self._revisioncache = None
+                if (
+                    self._inner._revisioncache
+                    and self._inner._revisioncache[0] == node
+                ):
+                    self._inner._revisioncache = None
 
                 revornode = rev
                 if revornode is None:
@@ -3149,7 +3152,7 @@
             rawtext = deltacomputer.buildtext(revinfo)
 
         if type(rawtext) == bytes:  # only accept immutable objects
-            self._revisioncache = (node, curr, rawtext)
+            self._inner._revisioncache = (node, curr, rawtext)
         self._chainbasecache[curr] = deltainfo.chainbase
         return curr
 
@@ -3432,7 +3435,7 @@
             self._docket.write(transaction, stripping=True)
 
         # then reset internal state in memory to forget those revisions
-        self._revisioncache = None
+        self._inner._revisioncache = None
         self._chaininfocache = util.lrucachedict(500)
         self._inner._segmentfile.clear_cache()
         self._inner._segmentfile_sidedata.clear_cache()