浏览代码

Merge branch 'minor' of https://github.com/sourcejedi/attic

Thomas Waldmann 9 年之前
父节点
当前提交
02ccf37766
共有 1 个文件被更改,包括 6 次插入2 次删除
  1. 6 2
      borg/repository.py

+ 6 - 2
borg/repository.py

@@ -334,7 +334,6 @@ class Repository:
             report_error('Adding commit tag to segment {}'.format(transaction_id))
             report_error('Adding commit tag to segment {}'.format(transaction_id))
             self.io.segment = transaction_id + 1
             self.io.segment = transaction_id + 1
             self.io.write_commit()
             self.io.write_commit()
-            self.io.close_segment()
         if current_index and not repair:
         if current_index and not repair:
             if len(current_index) != len(self.index):
             if len(current_index) != len(self.index):
                 report_error('Index object count mismatch. {} != {}'.format(len(current_index), len(self.index)))
                 report_error('Index object count mismatch. {} != {}'.format(len(current_index), len(self.index)))
@@ -517,6 +516,9 @@ class LoggedIO:
             return fd
             return fd
 
 
     def delete_segment(self, segment):
     def delete_segment(self, segment):
+        fd = self.fds.pop(segment)
+        if fd is not None:
+            fd.close()
         try:
         try:
             os.unlink(self.segment_filename(segment))
             os.unlink(self.segment_filename(segment))
         except OSError:
         except OSError:
@@ -559,7 +561,9 @@ class LoggedIO:
             header = fd.read(self.header_fmt.size)
             header = fd.read(self.header_fmt.size)
 
 
     def recover_segment(self, segment, filename):
     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
         # FIXME: save a copy of the original file
         with open(filename, 'rb') as fd:
         with open(filename, 'rb') as fd:
             data = memoryview(fd.read())
             data = memoryview(fd.read())