Jelajahi Sumber

deduplicate code of put and delete, no functional change

Thomas Waldmann 4 tahun lalu
induk
melakukan
5f32b5666a
1 mengubah file dengan 7 tambahan dan 7 penghapusan
  1. 7 7
      src/borg/repository.py

+ 7 - 7
src/borg/repository.py

@@ -1191,13 +1191,9 @@ class Repository:
         except KeyError:
             pass
         else:
-            self.segments[segment] -= 1
-            size = self.io.read(segment, offset, id, read_data=False)
-            self.storage_quota_use -= size
-            self.compact[segment] += size
-            segment, size = self.io.write_delete(id)
-            self.compact[segment] += size
-            self.segments.setdefault(segment, 0)
+            # note: doing a delete first will do some bookkeeping,
+            # like updating the shadow_index, quota, ...
+            self._delete(id, segment, offset)
         segment, offset = self.io.write_put(id, data)
         self.storage_quota_use += len(data) + self.io.put_header_fmt.size
         self.segments.setdefault(segment, 0)
@@ -1221,6 +1217,10 @@ class Repository:
         except KeyError:
             raise self.ObjectNotFound(id, self.path) from None
         self.shadow_index.setdefault(id, []).append(segment)
+        self._delete(id, segment, offset)
+
+    def _delete(self, id, segment, offset):
+        # common code used by put and delete
         self.segments[segment] -= 1
         size = self.io.read(segment, offset, id, read_data=False)
         self.storage_quota_use -= size