From a221ca16adee4b83ee02fc908343f55672d14a1e Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Wed, 11 Jul 2018 05:19:08 +0200 Subject: [PATCH] remote: introduce a dontcare flag (all values acceptable) in some cases the value of a new parameter does not really matter, as long as it works / there is no malfunction. without this change, a new borg client could not commit to an old borg server (and would fail late when trying to commit): - when using compact=False as it does at most places - when using cleanup_commits=True as a user might trigger by running borg compact --cleanup-commits we never want a borg commit "fail late", leaving the repo in a state with uncommitted data, thus the server shall just commit, no matter how it handles compaction or whether it can do the cleanup. --- src/borg/remote.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/borg/remote.py b/src/borg/remote.py index 8088418a0..44a7d8e87 100644 --- a/src/borg/remote.py +++ b/src/borg/remote.py @@ -462,6 +462,8 @@ def api(*, since, **kwargs_decorator): continue if 'previously' in restriction and named[name] == restriction['previously']: continue + if restriction.get('dontcare', False): + continue raise self.RPCServerOutdated("{0} {1}={2!s}".format(f.__name__, name, named[name]), format_version(restriction['since'])) @@ -890,8 +892,8 @@ This problem will go away as soon as the server has been upgraded to 1.0.7+. """actual remoting is done via self.call in the @api decorator""" @api(since=parse_version('1.0.0'), - compact={'since': parse_version('1.2.0a0'), 'previously': True}, - cleanup_commits={'since': parse_version('1.2.0a0'), 'previously': False}) + compact={'since': parse_version('1.2.0a0'), 'previously': True, 'dontcare': True}, + cleanup_commits={'since': parse_version('1.2.0a0'), 'previously': False, 'dontcare': True}) def commit(self, save_space=False, compact=True, cleanup_commits=False): """actual remoting is done via self.call in the @api decorator"""