452 else: |
452 else: |
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._delayed = True |
458 self._delayed = True |
458 tr.addpending(b'cl-%i' % id(self), self._writepending) |
459 tr.addpending(b'cl-%i' % id(self), self._writepending) |
459 tr.addfinalize(b'cl-%i' % id(self), self._finalize) |
460 tr.addfinalize(b'cl-%i' % id(self), self._finalize) |
460 |
461 |
461 def _finalize(self, tr): |
462 def _finalize(self, tr): |
462 """finalize index updates""" |
463 """finalize index updates""" |
463 self._delayed = False |
464 self._delayed = False |
464 self.opener = self._realopener |
465 self.opener = self._realopener |
|
466 self._segmentfile.opener = self.opener |
465 # move redirected index data back into place |
467 # move redirected index data back into place |
466 if self._docket is not None: |
468 if self._docket is not None: |
467 self._write_docket(tr) |
469 self._write_docket(tr) |
468 elif self._divert: |
470 elif self._divert: |
469 assert not self._delaybuf |
471 assert not self._delaybuf |