recompress: only read metadata to check for ctype/clevel

This commit is contained in:
Thomas Waldmann 2022-09-08 19:56:37 +02:00
parent 06eab6a228
commit b28d6ee657
2 changed files with 1 additions and 2 deletions

View File

@ -2269,7 +2269,7 @@ class ArchiveRecreater:
overwrite = self.recompress
if self.recompress and not self.always_recompress and chunk_id in self.cache.chunks:
# Check if this chunk is already compressed the way we want it
old_meta = self.repo_objs.parse_meta(chunk_id, self.repository.get(chunk_id))
old_meta = self.repo_objs.parse_meta(chunk_id, self.repository.get(chunk_id, read_data=False))
compr_hdr = bytes((old_meta["ctype"], old_meta["clevel"]))
compressor_cls, level = Compressor.detect(compr_hdr)
if (

View File

@ -1258,7 +1258,6 @@ class RepositoryCache(RepositoryNoCache):
shutil.rmtree(self.basedir)
def get_many(self, keys, read_data=True, cache=True):
# TODO: this currently always requests the full chunk from self.repository (read_data=True).
# It could use different cache keys depending on read_data and cache full vs. meta-only chunks.
unknown_keys = [key for key in keys if self.prefixed_key(key, complete=read_data) not in self.cache]
repository_iterator = zip(unknown_keys, self.repository.get_many(unknown_keys, read_data=read_data))