comparison mercurial/revlog.py @ 51142:66417f55ea33 stable

revlog: avoid exposing delayed index entry too widely in non-inline revlog Before this change, the index entry would be seen as "appended" to the data file. It did not hurt too much as there are never accessed for reading, but this was odd. So lets stop doing so.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 07 Dec 2023 00:34:08 +0100
parents 962974a5d068
children 849745d7da89
comparison
equal deleted inserted replaced
51141:962974a5d068 51142:66417f55ea33
1171 assert self.index_file is not None 1171 assert self.index_file is not None
1172 if self.opener.exists(self.index_file): 1172 if self.opener.exists(self.index_file):
1173 self.opener.unlink(self.index_file) 1173 self.opener.unlink(self.index_file)
1174 return self.index_file 1174 return self.index_file
1175 else: 1175 else:
1176 self._segmentfile._delay_buffer = self._delay_buffer = [] 1176 self._delay_buffer = []
1177 if self.inline:
1178 self._segmentfile._delay_buffer = self._delay_buffer
1177 return None 1179 return None
1178 1180
1179 def write_pending(self): 1181 def write_pending(self):
1180 assert not self.is_open 1182 assert not self.is_open
1181 if self._orig_index_file is not None: 1183 if self._orig_index_file is not None:
1191 if self._delay_buffer: 1193 if self._delay_buffer:
1192 with self.opener(pending_index_file, b'r+') as ifh: 1194 with self.opener(pending_index_file, b'r+') as ifh:
1193 ifh.seek(0, os.SEEK_END) 1195 ifh.seek(0, os.SEEK_END)
1194 ifh.write(b"".join(self._delay_buffer)) 1196 ifh.write(b"".join(self._delay_buffer))
1195 any_pending = True 1197 any_pending = True
1196 self._segmentfile._delay_buffer = self._delay_buffer = None 1198 self._delay_buffer = None
1199 if self.inline:
1200 self._segmentfile._delay_buffer = self._delay_buffer
1201 else:
1202 assert self._segmentfile._delay_buffer is None
1197 self._orig_index_file = self.index_file 1203 self._orig_index_file = self.index_file
1198 self.index_file = pending_index_file 1204 self.index_file = pending_index_file
1199 self._segmentfile.filename = self.index_file 1205 self._segmentfile.filename = self.index_file
1200 return self.index_file, any_pending 1206 return self.index_file, any_pending
1201 1207