457 else: |
457 else: |
458 self._delaybuf = [] |
458 self._delaybuf = [] |
459 self.opener = _delayopener( |
459 self.opener = _delayopener( |
460 self._realopener, self._indexfile, self._delaybuf |
460 self._realopener, self._indexfile, self._delaybuf |
461 ) |
461 ) |
462 self._segmentfile.opener = self.opener |
462 self._inner.opener = self.opener |
463 self._segmentfile_sidedata.opener = self.opener |
463 self._inner._segmentfile.opener = self.opener |
|
464 self._inner._segmentfile_sidedata.opener = self.opener |
464 self._delayed = True |
465 self._delayed = True |
465 tr.addpending(b'cl-%i' % id(self), self._writepending) |
466 tr.addpending(b'cl-%i' % id(self), self._writepending) |
466 tr.addfinalize(b'cl-%i' % id(self), self._finalize) |
467 tr.addfinalize(b'cl-%i' % id(self), self._finalize) |
467 |
468 |
468 def _finalize(self, tr): |
469 def _finalize(self, tr): |
469 """finalize index updates""" |
470 """finalize index updates""" |
470 self._delayed = False |
471 self._delayed = False |
471 self.opener = self._realopener |
472 self.opener = self._realopener |
472 self._segmentfile.opener = self.opener |
473 self._inner.opener = self.opener |
473 self._segmentfile_sidedata.opener = self.opener |
474 self._inner._segmentfile.opener = self.opener |
|
475 self._inner._segmentfile_sidedata.opener = self.opener |
474 # move redirected index data back into place |
476 # move redirected index data back into place |
475 if self._docket is not None: |
477 if self._docket is not None: |
476 self._write_docket(tr) |
478 self._write_docket(tr) |
477 elif self._divert: |
479 elif self._divert: |
478 assert not self._delaybuf |
480 assert not self._delaybuf |
508 fp2.close() |
510 fp2.close() |
509 # switch modes so finalize can simply rename |
511 # switch modes so finalize can simply rename |
510 self._delaybuf = None |
512 self._delaybuf = None |
511 self._divert = True |
513 self._divert = True |
512 self.opener = _divertopener(self._realopener, self._indexfile) |
514 self.opener = _divertopener(self._realopener, self._indexfile) |
513 self._segmentfile.opener = self.opener |
515 self._inner.opener = self.opener |
514 self._segmentfile_sidedata.opener = self.opener |
516 self._inner._segmentfile.opener = self.opener |
|
517 self._inner._segmentfile_sidedata.opener = self.opener |
515 |
518 |
516 if self._divert: |
519 if self._divert: |
517 return True |
520 return True |
518 |
521 |
519 return False |
522 return False |