fix borg config --cache (make sure cache gets closed via try/finally)

This commit is contained in:
Thomas Waldmann 2018-05-05 15:02:07 +02:00
parent 697bb36402
commit 322b442641
1 changed files with 32 additions and 31 deletions

View File

@ -1774,38 +1774,39 @@ class Archiver:
assert_secure(repository, manifest)
cache = Cache(repository, key, manifest, lock_wait=self.lock_wait)
if args.cache:
cache.cache_config.load()
config = cache.cache_config._config
save = cache.cache_config.save
validate = cache_validate
else:
config = repository.config
save = lambda: repository.save_config(repository.path, repository.config)
validate = repo_validate
try:
if args.cache:
cache.cache_config.load()
config = cache.cache_config._config
save = cache.cache_config.save
validate = cache_validate
else:
config = repository.config
save = lambda: repository.save_config(repository.path, repository.config)
validate = repo_validate
if args.delete:
validate(section, name, check_value=False)
config.remove_option(section, name)
if len(config.options(section)) == 0:
config.remove_section(section)
save()
elif args.value:
validate(section, name, args.value)
if section not in config.sections():
config.add_section(section)
config.set(section, name, args.value)
save()
else:
try:
print(config.get(section, name))
except (configparser.NoOptionError, configparser.NoSectionError) as e:
print(e, file=sys.stderr)
return EXIT_WARNING
if args.cache:
cache.close()
return EXIT_SUCCESS
if args.delete:
validate(section, name, check_value=False)
config.remove_option(section, name)
if len(config.options(section)) == 0:
config.remove_section(section)
save()
elif args.value:
validate(section, name, args.value)
if section not in config.sections():
config.add_section(section)
config.set(section, name, args.value)
save()
else:
try:
print(config.get(section, name))
except (configparser.NoOptionError, configparser.NoSectionError) as e:
print(e, file=sys.stderr)
return EXIT_WARNING
return EXIT_SUCCESS
finally:
if args.cache:
cache.close()
def do_debug_info(self, args):
"""display system information for debugging / bug reports"""