1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2025-03-14 16:11:43 +00:00

repo cleanup/write: invalidate cached FDs

(cherry picked from commit 7122913825)
This commit is contained in:
Thomas Waldmann 2017-09-06 05:42:22 +02:00
parent 2a58fe4266
commit 88e1340445

View file

@ -1176,6 +1176,8 @@ class LoggedIO:
count = 0
for segment, filename in self.segment_iterator(reverse=True):
if segment > transaction_id:
if segment in self.fds:
del self.fds[segment]
truncate_and_unlink(filename)
count += 1
else:
@ -1232,6 +1234,12 @@ class LoggedIO:
self._write_fd = SyncFile(self.segment_filename(self.segment), binary=True)
self._write_fd.write(MAGIC)
self.offset = MAGIC_LEN
if self.segment in self.fds:
# we may have a cached fd for a segment file we already deleted and
# we are writing now a new segment file to same file name. get rid of
# of the cached fd that still refers to the old file, so it will later
# get repopulated (on demand) with a fd that refers to the new file.
del self.fds[self.segment]
return self._write_fd
def get_fd(self, segment):