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