##// END OF EJS Templates
changelog-delay: adds some check around delaying and diverting write...
marmoute -
r51995:594f9128 default
parent child Browse files
Show More
@@ -448,6 +448,7 b' class changelog(revlog.revlog):'
448
448
449 def delayupdate(self, tr):
449 def delayupdate(self, tr):
450 """delay visibility of index updates to other readers"""
450 """delay visibility of index updates to other readers"""
451 assert not self._inner.is_open
451 if self._docket is None and not self._delayed:
452 if self._docket is None and not self._delayed:
452 if len(self) == 0:
453 if len(self) == 0:
453 self._divert = True
454 self._divert = True
@@ -468,6 +469,7 b' class changelog(revlog.revlog):'
468
469
469 def _finalize(self, tr):
470 def _finalize(self, tr):
470 """finalize index updates"""
471 """finalize index updates"""
472 assert not self._inner.is_open
471 self._delayed = False
473 self._delayed = False
472 self.opener = self._realopener
474 self.opener = self._realopener
473 self._inner.opener = self.opener
475 self._inner.opener = self.opener
@@ -494,6 +496,7 b' class changelog(revlog.revlog):'
494 def _writepending(self, tr):
496 def _writepending(self, tr):
495 """create a file containing the unfinalized state for
497 """create a file containing the unfinalized state for
496 pretxnchangegroup"""
498 pretxnchangegroup"""
499 assert not self._inner.is_open
497 if self._docket:
500 if self._docket:
498 return self._docket.write(tr, pending=True)
501 return self._docket.write(tr, pending=True)
499 if self._delaybuf:
502 if self._delaybuf:
@@ -620,6 +620,13 b' class _InnerRevlog:'
620 """True is a writing context is open"""
620 """True is a writing context is open"""
621 return self._writinghandles is not None
621 return self._writinghandles is not None
622
622
623 @property
624 def is_open(self):
625 """True if any file handle is being held
626
627 Used for assert and debug in the python code"""
628 return self._segmentfile.is_open or self._segmentfile_sidedata.is_open
629
623 @contextlib.contextmanager
630 @contextlib.contextmanager
624 def writing(self, transaction, data_end=None, sidedata_end=None):
631 def writing(self, transaction, data_end=None, sidedata_end=None):
625 """Open the revlog files for writing
632 """Open the revlog files for writing
@@ -50,6 +50,15 b' class randomaccessfile:'
50 self._cached_chunk = b''
50 self._cached_chunk = b''
51 self._cached_chunk_position = 0
51 self._cached_chunk_position = 0
52
52
53 @property
54 def is_open(self):
55 """True if any file handle is being held
56
57 Used for assert and debug in the python code"""
58 return (
59 self.reading_handle is not None or self.writing_handle is not None
60 )
61
53 def _open(self, mode=b'r'):
62 def _open(self, mode=b'r'):
54 """Return a file object"""
63 """Return a file object"""
55 return self.opener(self.filename, mode=mode)
64 return self.opener(self.filename, mode=mode)
General Comments 0
You need to be logged in to leave comments. Login now