-
Notifications
You must be signed in to change notification settings - Fork 5.5k
Allow events to be processed in the minion after the signal handler has been invoked #68209
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
dwoz
merged 5 commits into
saltstack:3006.x
from
barneysowood:minion-restart-handing-202507-3006.x
Jul 30, 2025
Merged
Allow events to be processed in the minion after the signal handler has been invoked #68209
dwoz
merged 5 commits into
saltstack:3006.x
from
barneysowood:minion-restart-handing-202507-3006.x
Jul 30, 2025
+91
−4
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
a9d99dc
to
4ff867e
Compare
4ff867e
to
4cdcb35
Compare
7270796
to
94395ed
Compare
94395ed
to
f0b408e
Compare
Allows event to be handled after the salt-minion service has received a SIGTERM. Previously once the signal handler was entered, the ioloop would no longer run. If there are events on the minion event bus that needs processing, they would not be handled. Moves the MinionManager stop() functionality to an async function and allows the ioloop to run and clear any waiting events and returns to masters.
Adds test for calling MinionManager stop() to test new functionality to allow events to be processed as minion is stopping. Sets up a MinionManager instance with a running event bus, then calls the stop function and immeadiately sends a test message on the event bus and reads it back to check that works once the stop() function has been called. Then checks that the usual functions to destroy the minion etc have also been called.
3 tasks
Ignores warning from pylint about self.io_loop.add_callback() not being callable - it clearly is as stop_async gets called.
cd1f1ef
to
2b0db18
Compare
Sets up the short sock_dir path in the test. Previously setting it in conftest.py was breaking another test because I'd done it as a Path, not a string, but I want to avoid changin behaviour of other tests, so setting it locally to the test.
twangboy
approved these changes
Jul 29, 2025
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What does this PR do?
Modifies the behaviour of the
MinionManager.stop()
function which is called from the signal handler incli.daemons.Minion()
so that it allows the io_loop to run. This allows minions to handle events on the minion event bus before being shut down.What issues does this PR fix or reference?
Fixes #68183
Previous Behavior
When calling
salt <minion> service.stop salt-minion no_block=True
, the result of the job would be sent as an event on the minion event bus, but would not be returned to the master as the signal handler was non-async so blocked any further processing.This would lead to an error due to no return on the master:
and an exception on the minion:
New Behavior
The minion now returns correctly:
# salt -linfo salt-dev1 service.restart salt-minion no_block=True salt-dev1: True
Merge requirements satisfied?
[NOTICE] Bug fixes or features added to Salt require tests.
Commits signed with SSH key?
Yes