cleanup: get rid of Cache.do_files, replace with cache_mode

not do_files == (cache_mode == 'd')  # d)isabled
This commit is contained in:
Thomas Waldmann 2018-03-08 03:39:38 +01:00
parent e9af3c6ab3
commit c27c98ced0
4 changed files with 13 additions and 11 deletions

View File

@ -993,7 +993,7 @@ Utilization of max. archive size: {csize_max:.0%}
# read-special mode, but we better play safe as this was wrong in the past:
path_hash = None
known, ids = False, None
first_run = not cache.files and cache.do_files
first_run = not cache.files and 'd' not in cache.cache_mode
if first_run:
logger.debug('Processing files ...')
chunks = None

View File

@ -1543,7 +1543,7 @@ class Archiver:
keep += prune_split(archives, '%Y', args.yearly, keep)
to_delete = (set(archives) | checkpoints) - (set(keep) | set(keep_checkpoints))
stats = Statistics()
with Cache(repository, key, manifest, do_files=False, lock_wait=self.lock_wait) as cache:
with Cache(repository, key, manifest, lock_wait=self.lock_wait) as cache:
list_logger = logging.getLogger('borg.output.list')
if args.output_list:
# set up counters for the progress display

View File

@ -360,9 +360,13 @@ class Cache:
def __new__(cls, repository, key, manifest, path=None, sync=True, do_files=False, warn_if_unencrypted=True,
progress=False, lock_wait=None, permit_adhoc_cache=False, cache_mode=DEFAULT_FILES_CACHE_MODE):
if not do_files and 'd' not in cache_mode:
cache_mode = 'd'
def local():
return LocalCache(repository=repository, key=key, manifest=manifest, path=path, sync=sync,
do_files=do_files, warn_if_unencrypted=warn_if_unencrypted, progress=progress,
warn_if_unencrypted=warn_if_unencrypted, progress=progress,
lock_wait=lock_wait, cache_mode=cache_mode)
def adhoc():
@ -421,10 +425,9 @@ class LocalCache(CacheStatsMixin):
Persistent, local (client-side) cache.
"""
def __init__(self, repository, key, manifest, path=None, sync=True, do_files=False, warn_if_unencrypted=True,
def __init__(self, repository, key, manifest, path=None, sync=True, warn_if_unencrypted=True,
progress=False, lock_wait=None, cache_mode=DEFAULT_FILES_CACHE_MODE):
"""
:param do_files: use file metadata cache
:param warn_if_unencrypted: print warning if accessing unknown unencrypted repository
:param lock_wait: timeout for lock acquisition (None: return immediately if lock unavailable)
:param sync: do :meth:`.sync`
@ -434,7 +437,6 @@ class LocalCache(CacheStatsMixin):
self.key = key
self.manifest = manifest
self.progress = progress
self.do_files = do_files
self.cache_mode = cache_mode
self.timestamp = None
self.txn_active = False
@ -487,7 +489,7 @@ class LocalCache(CacheStatsMixin):
with IntegrityCheckedFile(path=os.path.join(self.path, 'chunks'), write=False,
integrity_data=self.cache_config.integrity.get('chunks')) as fd:
self.chunks = ChunkIndex.read(fd)
if 'd' in self.cache_mode or not self.do_files: # d(isabled)
if 'd' in self.cache_mode: # d(isabled)
self.files = None
else:
self._read_files()
@ -934,7 +936,7 @@ class LocalCache(CacheStatsMixin):
ids is the list of chunk ids IF the file has not changed, otherwise None).
"""
cache_mode = self.cache_mode
if 'd' in cache_mode or not self.do_files or not stat.S_ISREG(st.st_mode): # d(isabled)
if 'd' in cache_mode or not stat.S_ISREG(st.st_mode): # d(isabled)
return False, None
# note: r(echunk) does not need the files cache in this method, but the files cache will
# be updated and saved to disk to memorize the files. To preserve previous generations in
@ -968,7 +970,7 @@ class LocalCache(CacheStatsMixin):
def memorize_file(self, path_hash, st, ids):
cache_mode = self.cache_mode
# note: r(echunk) modes will update the files cache, d(isabled) mode won't
if 'd' in cache_mode or not self.do_files or not stat.S_ISREG(st.st_mode):
if 'd' in cache_mode or not stat.S_ISREG(st.st_mode):
return
if 'c' in cache_mode:
cmtime_ns = safe_ns(st.st_ctime_ns)
@ -1015,7 +1017,7 @@ Chunk index: {0.total_unique_chunks:20d} unknown"""
pass
files = None
do_files = False
cache_mode = 'd'
def file_known_and_unchanged(self, path_hash, st, ignore_inode=False):
return False, None

View File

@ -257,7 +257,7 @@ class TestAdHocCache:
def test_files_cache(self, cache):
assert cache.file_known_and_unchanged(bytes(32), None) == (False, None)
assert not cache.do_files
assert cache.cache_mode == 'd'
assert cache.files is None
def test_txn(self, cache):