gentics / mesh

Gentics Mesh - The open source headless CMS for developers
https://getmesh.io
Apache License 2.0
569 stars 117 forks source link

Start Plugins asynchronously #955

Open philippguertler opened 4 years ago

philippguertler commented 4 years ago

Currently plugins are started one after another in a blocking fashion. A configurable timeout aborts the initialization if it takes too long. This blocks the startup of Mesh and in case of deployment over the API a Vert.x eventloop thread.

Instead, plugins should be started asynchronously and not be aborted by a timeout. Mesh should continue normally even if plugins take long, throw an error or never finish initializing.

Jotschi commented 4 years ago

We altered the plugin init mechanism. Currently we have a timeout. We could add a minor change to remove the timeout handling when the plugin init timeout has been set to <=0.

Jotschi commented 4 years ago

The timeout would need to be altered here: https://github.com/gentics/mesh/blob/9b3711a770976a37ef77471a66d8ab4b1202cd63/core/src/main/java/com/gentics/mesh/plugin/registry/DelegatingPluginRegistryImpl.java#L148

The lock timeout is however currently also bound to the plugin timeout. This would need to be modified as well. https://github.com/gentics/mesh/blob/9b3711a770976a37ef77471a66d8ab4b1202cd63/core/src/main/java/com/gentics/mesh/plugin/registry/DelegatingPluginRegistryImpl.java#L167