diff options
author | Philip Paquette <pcpaquette@gmail.com> | 2019-06-10 10:43:16 -0400 |
---|---|---|
committer | Philip Paquette <pcpaquette@gmail.com> | 2019-06-14 15:08:29 -0400 |
commit | 61baa26d018f2130b50472a16fc020db6cf61886 (patch) | |
tree | cda88275c48e0c436a5a399e9dba95fa679369c4 /diplomacy/utils/convoy_paths.py | |
parent | 24ffd1fa36b7c17164b19137357b77af6db6eb83 (diff) |
Gracefully handling UnpicklingError with convoys cache
Diffstat (limited to 'diplomacy/utils/convoy_paths.py')
-rw-r--r-- | diplomacy/utils/convoy_paths.py | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/diplomacy/utils/convoy_paths.py b/diplomacy/utils/convoy_paths.py index fdd2e38..5929d51 100644 --- a/diplomacy/utils/convoy_paths.py +++ b/diplomacy/utils/convoy_paths.py @@ -176,11 +176,16 @@ def add_to_cache(map_name): # Loading cache from disk (only if it's the correct version) if os.path.exists(DISK_CACHE_PATH): - cache_data = pickle.load(open(DISK_CACHE_PATH, 'rb')) - if cache_data.get('__version__', '') != __VERSION__: - print('Upgrading cache from version "%s" to "%s"' % (cache_data.get('__version__', '<N/A>'), __VERSION__)) - else: - disk_convoy_paths.update(cache_data) + try: + cache_data = pickle.load(open(DISK_CACHE_PATH, 'rb')) + if cache_data.get('__version__', '') != __VERSION__: + print('Upgrading cache from "%s" to "%s"' % (cache_data.get('__version__', '<N/A>'), __VERSION__)) + else: + disk_convoy_paths.update(cache_data) + + # Invalid pickle file - Rebuilding + except (pickle.UnpicklingError, EOFError): + pass # Getting map MD5 hash map_path = os.path.join(settings.PACKAGE_DIR, 'maps', map_name + '.map') @@ -208,9 +213,12 @@ def get_convoy_paths_cache(): # Loading cache from disk (only if it's the correct version) if os.path.exists(DISK_CACHE_PATH): - cache_data = pickle.load(open(DISK_CACHE_PATH, 'rb')) - if cache_data.get('__version__', '') == __VERSION__: - disk_convoy_paths.update(cache_data) + try: + cache_data = pickle.load(open(DISK_CACHE_PATH, 'rb')) + if cache_data.get('__version__', '') == __VERSION__: + disk_convoy_paths.update(cache_data) + except (pickle.UnpicklingError, EOFError): + pass # Getting map name and file paths files_path = glob.glob(settings.PACKAGE_DIR + '/maps/*.map') |