diff --git a/attic/repository.py b/attic/repository.py old mode 100644 new mode 100755 index eed85dc4..ad703165 --- a/attic/repository.py +++ b/attic/repository.py @@ -300,7 +300,6 @@ def report_error(msg): report_error('Adding commit tag to segment {}'.format(transaction_id)) self.io.segment = transaction_id + 1 self.io.write_commit() - self.io.close_segment() if current_index and not repair: if len(current_index) != len(self.index): report_error('Index object count mismatch. {} != {}'.format(len(current_index), len(self.index))) @@ -478,6 +477,9 @@ def get_fd(self, segment): return fd def delete_segment(self, segment): + fd = self.fds.pop(segment) + if fd is not None: + fd.close() try: os.unlink(self.segment_filename(segment)) except OSError: @@ -513,7 +515,9 @@ def iter_objects(self, segment, include_data=False): header = fd.read(self.header_fmt.size) def recover_segment(self, segment, filename): - self.fds.pop(segment).close() + fd = self.fds.pop(segment) + if fd is not None: + fd.close() # FIXME: save a copy of the original file with open(filename, 'rb') as fd: data = memoryview(fd.read())