提交 df34b777 authored 作者: Olivier Delalleau's avatar Olivier Delalleau

Reviewed usage of shutil.rmtree in cmodule.py to call _rmtree when appropriate

上级 427de44e
...@@ -482,7 +482,8 @@ class ModuleCache(object): ...@@ -482,7 +482,8 @@ class ModuleCache(object):
# failed rmtree() by touching a 'delete.me' file. This file is a message # failed rmtree() by touching a 'delete.me' file. This file is a message
# for a future process to try deleting the directory. # for a future process to try deleting the directory.
try: try:
shutil.rmtree(root) _rmtree(root, ignore_nocleanup=True,
msg="delete.me found in dir")
except: except:
# Maybe directory is still in use? We just leave it # Maybe directory is still in use? We just leave it
# for future removal (and make sure there is a # for future removal (and make sure there is a
...@@ -503,8 +504,8 @@ class ModuleCache(object): ...@@ -503,8 +504,8 @@ class ModuleCache(object):
# Under /tmp, file are removed periodically by the os. # Under /tmp, file are removed periodically by the os.
# So it is normal that this happens from time to time. # So it is normal that this happens from time to time.
warning("ModuleCache.refresh() Found key without dll in cache, deleting it.", key_pkl) warning("ModuleCache.refresh() Found key without dll in cache, deleting it.", key_pkl)
info("Erasing broken cache directory", key_pkl) _rmtree(root, ignore_nocleanup=True,
shutil.rmtree(root) msg="missing module file", level="info")
continue continue
if (time_now - last_access_time(entry)) < self.age_thresh_use: if (time_now - last_access_time(entry)) < self.age_thresh_use:
debug('refresh adding', key_pkl) debug('refresh adding', key_pkl)
...@@ -553,19 +554,16 @@ class ModuleCache(object): ...@@ -553,19 +554,16 @@ class ModuleCache(object):
if to_del: if to_del:
warning("ModuleCache.refresh() Found unversioned " warning("ModuleCache.refresh() Found unversioned "
"key in cache, removing it.", key_pkl) "key in cache, removing it.", key_pkl)
if len(to_del) == len(key_data.keys): # Since the version is in the module hash, all
# All keys were unversioned. # keys should be unversioned.
info("Erasing broken cache directory", key_pkl) if len(to_del) != len(key_data.keys):
shutil.rmtree(root) warning('Found a mix of unversioned and '
'versioned keys for the same '
'module', key_pkl)
_rmtree(root, ignore_nocleanup=True,
msg="unversioned key(s) in cache",
level='info')
continue continue
else:
# Fix the pickled file to only keep the
# versioned keys.
info("Fixing broken cache directory", key_pkl)
key_data.keys = set(
[key for key in key_data.keys
if key[0]])
key_data.save_pkl()
for key in key_data.keys: for key in key_data.keys:
if key not in self.entry_from_key: if key not in self.entry_from_key:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论