feat(fleet-controller): skip config re-apply and callbacks for unmodified reloads - #5452
Open
d3flex wants to merge 1 commit into
Open
feat(fleet-controller): skip config re-apply and callbacks for unmodified reloads#5452d3flex wants to merge 1 commit into
d3flex wants to merge 1 commit into
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR refines Fleet controller hot-reload behavior so that when a ConfigMap reload is rejected by the version guard, downstream reload paths do not re-apply the existing in-memory config or re-trigger OnChange callbacks.
Changes:
- Extend
ReadConfig/Lookupto return an “adopted” boolean alongside the config and error. - Skip
SetAndTrigger(wrangler OnChange path) andconfig.Set(controller-runtime reconciler path) when the new ConfigMap was not adopted. - Update unit tests to validate the new boolean return value for accepted vs rejected reloads.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| internal/config/config.go | Adds an adoption boolean to ReadConfig/Lookup so callers can detect rejected reloads. |
| internal/config/config_test.go | Updates tests to assert adoption behavior (accepted vs rejected). |
| internal/cmd/controller/reconciler/config_controller.go | Skips re-applying config in reconciler when reload is rejected by version guard. |
| internal/cmd/controller/agentmanagement/controllers/config/controller.go | Skips re-triggering callbacks on rejected reloads in wrangler OnChange path. |
| internal/cmd/controller/agentmanagement/agent/config.go | Updates Lookup call sites for new return signature. |
| internal/cmd/controller/agentmanagement/agent/agent.go | Updates Lookup call sites for new return signature. |
| internal/cmd/agent/register/register.go | Updates Lookup call sites for new return signature. |
| internal/cmd/agent/operator.go | Updates ReadConfig call site for new return signature. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
0xavi0
reviewed
Aug 10, 2026
0xavi0
left a comment
Contributor
There was a problem hiding this comment.
I think the Copilot comments are valid suggestions.
Aside from that.. looks good to me
…ed reloads The version guard in the previous commit kept a running controller's config in memory when it saw a mismatched-version ConfigMap, but it gave the caller no signal back. So the live reload paths kept working on a rejected ConfigMap anyway: reloadConfig re-fired every OnChange callback through SetAndTrigger, and Reconcile re-applied the retained config, even though nothing was adopted. ReadConfig and Lookup now return whether the config was adopted. Both live reload paths skip the re-apply and the callbacks when it was not, which slightly improves performance and avoids unnecessary overload. Refers to rancher#3547 Signed-off-by: Ioannis Bonatakis <ybonatakis@suse.com>
d3flex
force-pushed
the
feat/config_flag
branch
from
August 11, 2026 13:29
9d1df21 to
c48d834
Compare
Contributor
Author
both accepted and done |
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
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.
The version guard added in the previous commit kept a running controller's
config in memory when a mismatched-version ConfigMap was detected, but it
returned no signal to the caller. Without that signal the live reload paths
kept doing their work even for a rejected ConfigMap: reloadConfig re-fired
every OnChange callback via SetAndTrigger, and Reconcile re-applied the
retained config, when nothing was actually adopted.
ReadConfig and Lookup now report whether the config was adopted, and both
live reload paths skip re-applying and re-triggering callbacks when it was
not.
Depends-on: #5397
Refers to #3547