comparison mercurial/revlog.py @ 51105:045b5f745f93

revlog: consolidate cache invalidation within the inner objet The invalidation of data that belong to the inner object can and should be delegated to the inner object.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 25 Oct 2023 23:14:20 +0200
parents eba138890c64
children 594f912818ab
comparison
equal deleted inserted replaced
51104:ae6722dbb575 51105:045b5f745f93
404 self._segmentfile.filename = new_index_file 404 self._segmentfile.filename = new_index_file
405 405
406 def __len__(self): 406 def __len__(self):
407 return len(self.index) 407 return len(self.index)
408 408
409 def clear_cache(self):
410 self._revisioncache = None
411 self._segmentfile.clear_cache()
412 self._segmentfile_sidedata.clear_cache()
413
409 # Derived from index values. 414 # Derived from index values.
410 415
411 def start(self, rev): 416 def start(self, rev):
412 """the offset of the data chunk for this revision""" 417 """the offset of the data chunk for this revision"""
413 return int(self.index[rev][0] >> 16) 418 return int(self.index[rev][0] >> 16)
1805 else: 1810 else:
1806 nodemaputil.setup_persistent_nodemap(transaction, self) 1811 nodemaputil.setup_persistent_nodemap(transaction, self)
1807 1812
1808 def clearcaches(self): 1813 def clearcaches(self):
1809 """Clear in-memory caches""" 1814 """Clear in-memory caches"""
1810 self._inner._revisioncache = None
1811 self._chainbasecache.clear() 1815 self._chainbasecache.clear()
1812 self._inner._segmentfile.clear_cache() 1816 self._inner.clear_cache()
1813 self._inner._segmentfile_sidedata.clear_cache()
1814 self._pcache = {} 1817 self._pcache = {}
1815 self._nodemap_docket = None 1818 self._nodemap_docket = None
1816 self.index.clearcaches() 1819 self.index.clearcaches()
1817 # The python code is the one responsible for validating the docket, we 1820 # The python code is the one responsible for validating the docket, we
1818 # end up having to refresh it here. 1821 # end up having to refresh it here.
3500 self._docket.data_end = data_end 3503 self._docket.data_end = data_end
3501 self._docket.sidedata_end = sidedata_end 3504 self._docket.sidedata_end = sidedata_end
3502 self._docket.write(transaction, stripping=True) 3505 self._docket.write(transaction, stripping=True)
3503 3506
3504 # then reset internal state in memory to forget those revisions 3507 # then reset internal state in memory to forget those revisions
3505 self._inner._revisioncache = None
3506 self._chaininfocache = util.lrucachedict(500) 3508 self._chaininfocache = util.lrucachedict(500)
3507 self._inner._segmentfile.clear_cache() 3509 self._inner.clear_cache()
3508 self._inner._segmentfile_sidedata.clear_cache()
3509 3510
3510 del self.index[rev:-1] 3511 del self.index[rev:-1]
3511 3512
3512 def checksize(self): 3513 def checksize(self):
3513 """Check size of index and data files 3514 """Check size of index and data files