[OpAMP] Add remote config settings and ensure correct capabilities#3618
Merged
Kielek merged 4 commits intoDec 19, 2025
Merged
Conversation
- Introduce `RemoteConfigSettings` to allow configuring remote configuration support in the OpAMP client. - Update capability advertisement logic to include `AcceptsRemoteConfig` when enabled. - Add and update tests to verify capability flags and heartbeat behavior. - Update unshipped public API.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3618 +/- ##
==========================================
+ Coverage 71.49% 71.52% +0.02%
==========================================
Files 443 444 +1
Lines 17546 17551 +5
==========================================
+ Hits 12545 12553 +8
+ Misses 5001 4998 -3
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
martincostello
approved these changes
Dec 16, 2025
Contributor
Author
|
@Kielek If this looks okay, I'm wondering if we can get a new alpha release with the changes so far? I'm on leave for two weeks starting Monday so I'll pick up the other message types etc. when I'm back to work. |
Kielek
approved these changes
Dec 19, 2025
Member
|
This PR should be merged shortly. When it will be done, please create issues based on https://github.com/open-telemetry/opentelemetry-dotnet-contrib/issues/new?template=release_request.yml |
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.
Fixes #3617
Changes
RemoteConfigSettingsto allow configuring remote configuration support in the OpAMP client.AcceptsRemoteConfigwhen enabled.Design notes
For this initial PR, this exposes a single property on
RemoteConfigSettingsto identify that the client can handle remote configuration. The intent is that this can be later expanded once we expose APIs for sending the effictive config and remote config status.I've also updated the advertised capabilities to not set the health or heartbeat flags when heartbeat is disabled based on an assumption of how that should work. I believe we should only advertise features we know the client implements (and are enabled) or consumers implement by confguring the client and registering subscribers.
I also wonder if we should avoid dispatching the
RemoteConfigMessageto listeners if this feature is disabled. In theory, we should never receive it from the server unless we advertise the capability, but we could take a precaution to drop the message should it somehow arrive. This only really matters if for some reason a listener is registered forRemoteConfigMessagebut the feature is disabled in the settings.Alternative design to consider
We may want to consider avoiding this extra
RemoteConfigSettingstype entirely and instead, we could potentially infer the capability based on registered subscribers. I've not prototyped that to know if it's definititely possible and it would also only work if all subscribedIOpAmpListerners are added registered beforeStartAsyncis called. In one respect, I like the idea that all a consumer would need to do is register the listener and our implementation works out the rest, but it might be a little too much magic. We may want to support binding configuration from other sources at some point so having a settings class we can bind to is useful there. If we don't include the settings type, it would also prevent a consumer from easily disabling the feature through code (temporily) but leaving their listener registered.Merge requirement checklist
CHANGELOG.mdfiles updated for non-trivial changes