forked from platypush/platypush
Fabio Manganiello
bf7d060b81
The `variable` plugin may break in the constructor the first time the application is started. That's because it tries to initialize the cache of stored variables, but the local database hasn't yet been initialized. That's because plugins are registered _before_ the entities engine is initialized, as the entities engine assumes that it already has plugins to scan for entities. Therefore, the initialization of the `variable` plugin's cache should be lazy (only done upon the first call to `get`/`set` etc.), in order to prevent deadlock situations where the plugin waits for the engine to start, but the engine will be initialized only after the plugin is ready. And the lazy initialization logic should also ensure that the entities engine has been properly started (and emit a `TimeoutError` if that's not the case), in order to prevent race conditions. |
||
---|---|---|
.. | ||
app | ||
backend | ||
bus | ||
commands | ||
common | ||
config | ||
context | ||
cron | ||
entities | ||
event | ||
exceptions | ||
message | ||
migrations | ||
platydock | ||
plugins | ||
procedure | ||
process | ||
runner | ||
schemas | ||
user | ||
utils | ||
__init__.py | ||
__main__.py | ||
cli.py | ||
logger.py |