feat(remoteconfig): add support to the RC client for unsubscribing from a product
Unsubscribing removes a previously registered callback from being invoked when its specific product receives an update. When the last subscription for a particular product is remove, remote config is not polled for that product anymore.
This will be useful for remotely disabling Live Debugger on a tracer: once disabled, the previously-established subscription to the respective RC product needs to be terminated.
Reviewer's Checklist
- [ ] Changed code has unit tests for its functionality at or near 100% coverage.
- [ ] System-Tests covering this feature have been added and enabled with the va.b.c-dev version tag.
- [ ] There is a benchmark for any new code, or changes to existing code.
- [ ] If this interacts with the agent in a new way, a system test has been added.
- [ ] New code is free of linting errors. You can check this by running
./scripts/lint.shlocally. - [ ] Add an appropriate team label so this PR gets put in the right place for the release notes.
- [ ] Non-trivial go.mod changes, e.g. adding new modules, are reviewed by @DataDog/dd-trace-go-guild.
Benchmarks
Benchmark execution time: 2025-12-10 23:38:20
Comparing candidate commit d0d78049d135542c24a6cbeb1d1654e2edf599ab in PR branch andrei/rc-unsubscribe with baseline commit 1a6f881c21ee90c07057e794e50fcdeb31cdb618 in branch main.
Found 0 performance improvements and 0 performance regressions! Performance is the same for 15 metrics, 0 unstable metrics.
Codecov Report
:x: Patch coverage is 81.42857% with 13 lines in your changes missing coverage. Please review.
:white_check_mark: Project coverage is 54.41%. Comparing base (1a6f881) to head (d0d7804).
:warning: Report is 17 commits behind head on main.
| Files with missing lines | Patch % | Lines |
|---|---|---|
| internal/remoteconfig/remoteconfig.go | 81.25% | 11 Missing and 1 partial :warning: |
| openfeature/remoteconfig.go | 0.00% | 1 Missing :warning: |
Additional details and impacted files
| Files with missing lines | Coverage Δ | |
|---|---|---|
| ddtrace/tracer/remote_config.go | 89.47% <100.00%> (ø) |
|
| internal/appsec/remoteconfig.go | 56.45% <100.00%> (+0.20%) |
:arrow_up: |
| openfeature/remoteconfig.go | 73.11% <0.00%> (ø) |
|
| internal/remoteconfig/remoteconfig.go | 65.10% <81.25%> (+5.38%) |
:arrow_up: |
:rocket: New features to boost your workflow:
- :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
- :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
✅ Tests
🎉 All green!
❄️ No new flaky tests detected
🧪 All tests passed
* Fix with Cursor requires Datadog plugin ≥v2.17.0
🔗 Commit SHA: d0d7804 | Docs | Datadog PR Page | Was this helpful? Give us feedback!
/merge
View all feedbacks in Devflow UI.
2025-12-15 19:19:52 UTC :information_source: Start processing command /merge
2025-12-15 19:20:04 UTC :information_source: MergeQueue: waiting for PR to be ready
This pull request is not mergeable according to GitHub. Common reasons include pending required checks, missing approvals, or merge conflicts — but it could also be blocked by other repository rules or settings.
It will be added to the queue as soon as checks pass and/or get approvals.
Note: if you pushed new commits since the last approval, you may need additional approval.
You can remove it from the waiting list with /remove command.
2025-12-15 23:20:10 UTC :warning: MergeQueue: This merge request was unqueued
devflow unqueued this merge request: It did not become mergeable within the expected time
/merge
View all feedbacks in Devflow UI.
2025-12-16 16:25:03 UTC :information_source: Start processing command /merge
2025-12-16 16:25:08 UTC :information_source: MergeQueue: pull request added to the queue
The expected merge time in main is approximately 46m (p90).
2025-12-16 16:52:42 UTC :information_source: MergeQueue: This merge request was merged