Mercurial > public > mercurial-scm > hg-stable
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 |