##// END OF EJS Templates
revlog: open files in 'r+' instead of 'a+'...
marmoute -
r47991:8f6165c9 default
parent child Browse files
Show More
@@ -2016,7 +2016,7 b' class revlog(object):'
2016 2016
2017 2017 if existing_handles:
2018 2018 # switched from inline to conventional reopen the index
2019 ifh = self._indexfp(b"a+")
2019 ifh = self._indexfp(b"r+")
2020 2020 self._writinghandles = (ifh, new_dfh)
2021 2021 new_dfh = None
2022 2022 finally:
@@ -2037,11 +2037,23 b' class revlog(object):'
2037 2037 dsize = self.end(r - 1)
2038 2038 dfh = None
2039 2039 if not self._inline:
2040 dfh = self._datafp(b"a+")
2040 try:
2041 dfh = self._datafp(b"r+")
2042 dfh.seek(0, os.SEEK_END)
2043 except IOError as inst:
2044 if inst.errno != errno.ENOENT:
2045 raise
2046 dfh = self._datafp(b"w+")
2041 2047 transaction.add(self._datafile, dsize)
2042 2048 try:
2043 2049 isize = r * self.index.entry_size
2044 ifh = self._indexfp(b"a+")
2050 try:
2051 ifh = self._indexfp(b"r+")
2052 ifh.seek(0, os.SEEK_END)
2053 except IOError as inst:
2054 if inst.errno != errno.ENOENT:
2055 raise
2056 ifh = self._indexfp(b"w+")
2045 2057 if self._inline:
2046 2058 transaction.add(self._indexfile, dsize + isize)
2047 2059 else:
@@ -3174,6 +3186,8 b' class revlog(object):'
3174 3186 entry = (new_offset_flags,) + entry[1:8]
3175 3187 entry += (current_offset, len(serialized_sidedata))
3176 3188
3189 # the sidedata computation might have move the file cursors around
3190 dfh.seek(current_offset, os.SEEK_SET)
3177 3191 dfh.write(serialized_sidedata)
3178 3192 new_entries.append(entry)
3179 3193 current_offset += len(serialized_sidedata)
@@ -706,7 +706,7 b' class _fncachevfs(vfsmod.proxyvfs):'
706 706 # do not trigger a fncache load when adding a file that already is
707 707 # known to exist.
708 708 notload = self.fncache.entries is None and self.vfs.exists(encoded)
709 if notload and b'a' in mode and not self.vfs.stat(encoded).st_size:
709 if notload and b'r+' in mode and not self.vfs.stat(encoded).st_size:
710 710 # when appending to an existing file, if the file has size zero,
711 711 # it should be considered as missing. Such zero-size files are
712 712 # the result of truncation when a transaction is aborted.
General Comments 0
You need to be logged in to leave comments. Login now