Ensure that plugin_shutdown()
is always called.
#26
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Even if there was an exception during
plugin_startup()
.Resolves AntelopeIO/leap#25.
Currently, because a plugin is stored in the
running_plugins
list only afterplugin_startup()
, it would not be present if it throws duringplugin_startup()
, and as a consequenceplugin_shutdown()
would not be called on this plugin.We need to make sure that
plugin_shutdown()
is called regardless of whetherplugin_startup()
completed successfully or not. That way, plugins can rest assured that whatever thread_pool or timer they started duringplugin_startup()
will be cleaned up, and no lambda referencing the plugin will be executed after the plugin is destroyed by the framework.The fix is just flipping two lines in
abstract_plugin::startup()
. The rest is just adding a test to verify that the fix indeed works.see parent issue AntelopeIO/spring#842.