mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-26 12:21:26 -07:00
clear all loader caches with new dir for plugin (#53413)
* clear all loader caches with new dir for plugin fixes #17078 * added toggle to revert behaviour
This commit is contained in:
parent
35b95abf28
commit
a8eb25ac14
3 changed files with 32 additions and 2 deletions
|
@ -113,13 +113,32 @@ class PluginLoader:
|
|||
if class_name not in PLUGIN_PATH_CACHE:
|
||||
PLUGIN_PATH_CACHE[class_name] = defaultdict(dict)
|
||||
|
||||
# hold dirs added at runtime outside of config
|
||||
self._extra_dirs = []
|
||||
|
||||
# caches
|
||||
self._module_cache = MODULE_CACHE[class_name]
|
||||
self._paths = PATH_CACHE[class_name]
|
||||
self._plugin_path_cache = PLUGIN_PATH_CACHE[class_name]
|
||||
|
||||
self._extra_dirs = []
|
||||
self._searched_paths = set()
|
||||
|
||||
def _clear_caches(self):
|
||||
|
||||
if C.OLD_PLUGIN_CACHE_CLEARING:
|
||||
self._paths = None
|
||||
else:
|
||||
# reset global caches
|
||||
MODULE_CACHE[self.class_name] = {}
|
||||
PATH_CACHE[self.class_name] = None
|
||||
PLUGIN_PATH_CACHE[self.class_name] = defaultdict(dict)
|
||||
|
||||
# reset internal caches
|
||||
self._module_cache = MODULE_CACHE[self.class_name]
|
||||
self._paths = PATH_CACHE[self.class_name]
|
||||
self._plugin_path_cache = PLUGIN_PATH_CACHE[self.class_name]
|
||||
self._searched_paths = set()
|
||||
|
||||
def __setstate__(self, data):
|
||||
'''
|
||||
Deserializer.
|
||||
|
@ -276,7 +295,7 @@ class PluginLoader:
|
|||
if directory not in self._extra_dirs:
|
||||
# append the directory and invalidate the path cache
|
||||
self._extra_dirs.append(directory)
|
||||
self._paths = None
|
||||
self._clear_caches()
|
||||
display.debug('Added %s to loader search path' % (directory))
|
||||
|
||||
def _find_plugin(self, name, mod_type='', ignore_deprecated=False, check_aliases=False):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue