From: Hans-Christoph Steiner Date: Thu, 29 Jun 2017 19:15:30 +0000 (+0200) Subject: update: invalidate cache if allow_disabled_algorithms changes X-Git-Tag: 0.8~29^2~1 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=56ee5de2bd6bfef3aa53d8984c02211c13dac360;p=fdroidserver.git update: invalidate cache if allow_disabled_algorithms changes Since the cache contains implicitly the result of the jarsigner verify, if the allow_disabled_algorithms config changes, then the apkcache is invalid. --- diff --git a/fdroidserver/update.py b/fdroidserver/update.py index 1e368f6e..6e77d88c 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -423,20 +423,35 @@ def get_cache_file(): def get_cache(): - """ + """Get the cached dict of the APK index + Gather information about all the apk files in the repo directory, - using cached data if possible. + using cached data if possible. Some of the index operations take a + long time, like calculating the SHA-256 and verifying the APK + signature. + + The cache is invalidated if the metadata version is different, or + the 'allow_disabled_algorithms' config/option is different. In + those cases, there is no easy way to know what has changed from + the cache, so just rerun the whole thing. + :return: apkcache + """ apkcachefile = get_cache_file() + ada = options.allow_disabled_algorithms or config['allow_disabled_algorithms'] if not options.clean and os.path.exists(apkcachefile): with open(apkcachefile, 'rb') as cf: apkcache = pickle.load(cf, encoding='utf-8') - if apkcache.get("METADATA_VERSION") != METADATA_VERSION: + if apkcache.get("METADATA_VERSION") != METADATA_VERSION \ + or apkcache.get('allow_disabled_algorithms') != ada: apkcache = {} else: apkcache = {} + apkcache["METADATA_VERSION"] = METADATA_VERSION + apkcache['allow_disabled_algorithms'] = ada + return apkcache @@ -445,7 +460,6 @@ def write_cache(apkcache): cache_path = os.path.dirname(apkcachefile) if not os.path.exists(cache_path): os.makedirs(cache_path) - apkcache["METADATA_VERSION"] = METADATA_VERSION with open(apkcachefile, 'wb') as cf: pickle.dump(apkcache, cf)