Mercurial > public > mercurial-scm > hg-stable
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 |