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 |