Skip to content

Commit 8db2db0

Browse files
committed
fix: remove cache tree when corrupt
1 parent a21a63f commit 8db2db0

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

lib/vsc/utils/cache.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"""
3131
import diskcache as dc
3232
import logging
33+
import shutil
3334
import time
3435

3536

@@ -69,7 +70,11 @@ def __init__(self, filename, retain_old=True, raise_unpickable=False):
6970
self.retain_old = retain_old # this is no longer used
7071

7172
self.filename = filename
72-
self.cache = dc.Cache(filename)
73+
try:
74+
self.cache = dc.Cache(filename)
75+
except:
76+
shutil.rmtree(filename)
77+
self.cache = dc.Cache(filename)
7378

7479
if not retain_old:
7580
self.cache.clear()

test/cache.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,15 +102,17 @@ def test_save_and_load(self):
102102

103103
shutil.rmtree(tempdir)
104104

105-
def test_corrupt_gz_cache(self):
105+
def test_corrupt_cache(self):
106106
"""Test to see if we can handle a corrupt cache file"""
107107
tempdir = tempfile.mkdtemp()
108-
# create a tempfilename
109-
(handle, filename) = tempfile.mkstemp(dir=tempdir)
110-
f = os.fdopen(handle, 'w')
111-
f.write('blabla;not gz')
112-
f.close()
113-
FileCache(filename)
108+
109+
# create a bollocks cache file
110+
with open(os.path.join(tempdir, "cache.db", "w")) as f:
111+
f.write("blabla")
112+
113+
# this should clear the cache and create a new one
114+
FileCache(tempdir)
115+
114116
shutil.rmtree(tempdir)
115117

116118
@mock.patch('vsc.utils.cache.jsonpickle.decode')

0 commit comments

Comments
 (0)