浏览代码

upgrader fixes for new api

Thomas Waldmann 2 年之前
父节点
当前提交
cf333cef91
共有 3 个文件被更改,包括 15 次插入6 次删除
  1. 9 2
      src/borg/archiver/transfer_cmd.py
  2. 4 2
      src/borg/cache.py
  3. 2 2
      src/borg/upgrade.py

+ 9 - 2
src/borg/archiver/transfer_cmd.py

@@ -71,9 +71,16 @@ class TransferMixIn:
                                     # keep compressed payload same, avoid decompression / recompression
                                     meta, data = other_manifest.repo_objs.parse(chunk_id, cdata, decompress=False)
                                     meta, data = upgrader.upgrade_compressed_chunk(meta, data)
-
                                     chunk_entry = cache.add_chunk(
-                                        chunk_id, meta, data, stats=archive.stats, wait=False, compress=False, size=size
+                                        chunk_id,
+                                        meta,
+                                        data,
+                                        stats=archive.stats,
+                                        wait=False,
+                                        compress=False,
+                                        size=size,
+                                        ctype=meta["ctype"],
+                                        clevel=meta["clevel"],
                                     )
                                     cache.repository.async_response(wait=False)
                                     chunks.append(chunk_entry)

+ 4 - 2
src/borg/cache.py

@@ -943,7 +943,9 @@ class LocalCache(CacheStatsMixin):
         self.cache_config.ignored_features.update(repo_features - my_features)
         self.cache_config.mandatory_features.update(repo_features & my_features)
 
-    def add_chunk(self, id, meta, data, *, stats, overwrite=False, wait=True, compress=True, size=None):
+    def add_chunk(
+        self, id, meta, data, *, stats, overwrite=False, wait=True, compress=True, size=None, ctype=None, clevel=None
+    ):
         if not self.txn_active:
             self.begin_txn()
         if size is None and compress:
@@ -953,7 +955,7 @@ class LocalCache(CacheStatsMixin):
             return self.chunk_incref(id, stats)
         if size is None:
             raise ValueError("when giving compressed data for a new chunk, the uncompressed size must be given also")
-        cdata = self.repo_objs.format(id, meta, data, compress=compress, size=size)
+        cdata = self.repo_objs.format(id, meta, data, compress=compress, size=size, ctype=ctype, clevel=clevel)
         self.repository.put(id, cdata, wait=wait)
         self.chunks.add(id, 1, size)
         stats.update(size, not refcount)

+ 2 - 2
src/borg/upgrade.py

@@ -19,7 +19,7 @@ class UpgraderNoOp:
     def upgrade_item(self, *, item):
         return item
 
-    def upgrade_compressed_chunk(self, *, meta, data):
+    def upgrade_compressed_chunk(self, meta, data):
         return meta, data
 
     def upgrade_archive_metadata(self, *, metadata):
@@ -98,7 +98,7 @@ class UpgraderFrom12To20:
         assert all(key in new_item for key in REQUIRED_ITEM_KEYS)
         return new_item
 
-    def upgrade_compressed_chunk(self, *, meta, data):
+    def upgrade_compressed_chunk(self, meta, data):
         # meta/data was parsed via RepoObj1.parse, which returns data **including** the ctype/clevel bytes prefixed
         def upgrade_zlib_and_level(meta, data):
             if ZLIB_legacy.detect(data):