diff --git a/borg/cache.py b/borg/cache.py index 51e13ab1e..d69614a57 100644 --- a/borg/cache.py +++ b/borg/cache.py @@ -392,6 +392,11 @@ Chunk index: {0.total_unique_chunks:20d} {0.total_chunks:20d}""" except: pass + # The cache can be used by a command that e.g. only checks against Manifest.Operation.WRITE, + # which does not have to include all flags from Manifest.Operation.READ. + # Since the sync will attempt to read archives, check compatibility with Manifest.Operation.READ. + self.manifest.check_repository_compatibility((Manifest.Operation.READ, )) + self.begin_txn() with cache_if_remote(self.repository) as repository: legacy_cleanup() diff --git a/borg/testsuite/archiver.py b/borg/testsuite/archiver.py index 81974a8c0..3c5920499 100644 --- a/borg/testsuite/archiver.py +++ b/borg/testsuite/archiver.py @@ -938,6 +938,12 @@ class ArchiverTestCase(ArchiverTestCaseBase): self.add_unknown_feature(Manifest.Operation.WRITE) self.cmd_raises_unknown_feature(['create', self.repository_location + '::test', 'input']) + def test_unknown_feature_on_cache_sync(self): + self.cmd('init', '--encryption=repokey', self.repository_location) + self.cmd('delete', '--cache-only', self.repository_location) + self.add_unknown_feature(Manifest.Operation.READ) + self.cmd_raises_unknown_feature(['create', self.repository_location + '::test', 'input']) + def test_unknown_feature_on_change_passphrase(self): print(self.cmd('init', self.repository_location)) self.add_unknown_feature(Manifest.Operation.CHECK)