This repository was archived by the owner on Jan 21, 2020. It is now read-only.
Plugin management utility - plugin stop #367
Merged
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.
This PR tries to address a common complaint about running Infrakit: starting and stopping of plugins. Plugin servers now write a
<name>.pid
file in the same plugin discovery directory. For non-containerized cases, the pid is used by a new command line verbinfrakit plugin stop
to sendSIGTERM
to the plugin processes for force clean shutdown. On shutting down the PID file is removed cleanly as is with the socket file.pkg/cli/serverutil.go
) and cleanup on shutdown.stop
underinfrakit plugin
. This simply reads the pid files and sendSIGTERM
to the process: in essence it doeskill -TERM $(cat /plugins/plugin.pid)
.scripts/e2e-test.sh
.This is useful for stopping the plugins when the starter
infrakit plugin start
exits (no--wait
option) and the plugins become orphaned (adopted by init). Another applicable scenario is when the config json (e.g.scripts/e2e-test-plugins.json
) used by the start utility has specified the plugins be running in a separate process group -- which also will leave the plugins running after the starter exits.Workflow: