Mercurial > hg
comparison mercurial/changelog.py @ 47426:cac0e0621ceb
revlog: use file read caching for sidedata
The previous changeset extracted this caching logic from the revlog class into
a new class. Adding a new instance of that class allows using the same logic
for side data.
Differential Revision: https://phab.mercurial-scm.org/D10879
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Tue, 15 Jun 2021 12:34:14 +0200 |
parents | e0a314bcbc9d |
children | 6000f5b25c9b |
comparison
equal
deleted
inserted
replaced
47425:e0a314bcbc9d | 47426:cac0e0621ceb |
---|---|
453 self._delaybuf = [] | 453 self._delaybuf = [] |
454 self.opener = _delayopener( | 454 self.opener = _delayopener( |
455 self._realopener, self._indexfile, self._delaybuf | 455 self._realopener, self._indexfile, self._delaybuf |
456 ) | 456 ) |
457 self._segmentfile.opener = self.opener | 457 self._segmentfile.opener = self.opener |
458 self._segmentfile_sidedata.opener = self.opener | |
458 self._delayed = True | 459 self._delayed = True |
459 tr.addpending(b'cl-%i' % id(self), self._writepending) | 460 tr.addpending(b'cl-%i' % id(self), self._writepending) |
460 tr.addfinalize(b'cl-%i' % id(self), self._finalize) | 461 tr.addfinalize(b'cl-%i' % id(self), self._finalize) |
461 | 462 |
462 def _finalize(self, tr): | 463 def _finalize(self, tr): |
463 """finalize index updates""" | 464 """finalize index updates""" |
464 self._delayed = False | 465 self._delayed = False |
465 self.opener = self._realopener | 466 self.opener = self._realopener |
466 self._segmentfile.opener = self.opener | 467 self._segmentfile.opener = self.opener |
468 self._segmentfile_sidedata.opener = self.opener | |
467 # move redirected index data back into place | 469 # move redirected index data back into place |
468 if self._docket is not None: | 470 if self._docket is not None: |
469 self._write_docket(tr) | 471 self._write_docket(tr) |
470 elif self._divert: | 472 elif self._divert: |
471 assert not self._delaybuf | 473 assert not self._delaybuf |
502 # switch modes so finalize can simply rename | 504 # switch modes so finalize can simply rename |
503 self._delaybuf = None | 505 self._delaybuf = None |
504 self._divert = True | 506 self._divert = True |
505 self.opener = _divertopener(self._realopener, self._indexfile) | 507 self.opener = _divertopener(self._realopener, self._indexfile) |
506 self._segmentfile.opener = self.opener | 508 self._segmentfile.opener = self.opener |
509 self._segmentfile_sidedata.opener = self.opener | |
507 | 510 |
508 if self._divert: | 511 if self._divert: |
509 return True | 512 return True |
510 | 513 |
511 return False | 514 return False |