forked from platypush/platypush
Prevent the plugin from being initialized again within the lock scope if another thread had it initialized in the meantime
This commit is contained in:
parent
98d24b061a
commit
db5d3e6e3f
1 changed files with 5 additions and 3 deletions
|
@ -94,13 +94,15 @@ def get_plugin(plugin_name, reload=False):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
plugin_class = getattr(plugin, cls_name)
|
plugin_class = getattr(plugin, cls_name)
|
||||||
|
|
||||||
with plugins_init_locks[plugin_name]:
|
|
||||||
plugins[plugin_name] = plugin_class(**plugin_conf)
|
|
||||||
except AttributeError as e:
|
except AttributeError as e:
|
||||||
logger.warning('No such class in {}: {}'.format(plugin_name, cls_name))
|
logger.warning('No such class in {}: {}'.format(plugin_name, cls_name))
|
||||||
raise RuntimeError(e)
|
raise RuntimeError(e)
|
||||||
|
|
||||||
|
with plugins_init_locks[plugin_name]:
|
||||||
|
if plugins.get(plugin_name) and not reload:
|
||||||
|
return plugins[plugin_name]
|
||||||
|
plugins[plugin_name] = plugin_class(**plugin_conf)
|
||||||
|
|
||||||
return plugins[plugin_name]
|
return plugins[plugin_name]
|
||||||
|
|
||||||
def get_bus():
|
def get_bus():
|
||||||
|
|
Loading…
Reference in a new issue