Skip to content

Remove support for full configuration as RC record#11275

Open
jpbempel wants to merge 2 commits intomasterfrom
jpbempel/remove-config-record-in-rc
Open

Remove support for full configuration as RC record#11275
jpbempel wants to merge 2 commits intomasterfrom
jpbempel/remove-config-record-in-rc

Conversation

@jpbempel
Copy link
Copy Markdown
Member

@jpbempel jpbempel commented May 4, 2026

What Does This Do

In early days we started to have one big configuration per service with all probe definitions. we migrated for one probe per RC record since then. We do not have to support the big configuration record as this is no longer distributed by RemoteConfig.
Remove also appliedConfiguration as this map is in practice useless

Motivation

Additional Notes

Contributor Checklist

Jira ticket: [DEBUG-5515, DEBUG-5511]

Note: Once your PR is ready to merge, add it to the merge queue by commenting /merge. /merge -c cancels the queue request. /merge -f --reason "reason" skips all merge queue checks; please use this judiciously, as some checks do not run at the PR-level. For more information, see this doc.

In early days we started to have one big configuration per service
with all probe definitions. we migrated for one probe per RC record
since then. We do not have to support the big configuration record
as this is no longer distributed by RemoteConfig.
Remove also appliedConfiguration as this map is in practice useless
@jpbempel jpbempel requested a review from a team as a code owner May 4, 2026 16:19
@jpbempel jpbempel requested review from dudikeleti and removed request for a team May 4, 2026 16:19
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 4, 2026

Hi! 👋 Thanks for your pull request! 🎉

To help us review it, please make sure to:

  • Add at least one type, and one component or instrumentation label to the pull request

If you need help, please check our contributing guidelines.

@jpbempel jpbempel added comp: debugger Dynamic Instrumentation tag: no release notes Changes to exclude from release notes type: refactoring labels May 4, 2026
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 298086ae69

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

// only visible for tests
Map<String, ProbeDefinition> getAppliedDefinitions() {
return appliedDefinitions;
return currentConfiguration.getDefinitions().stream()
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Handle unset current configuration in getAppliedDefinitions

getAppliedDefinitions() now dereferences currentConfiguration unconditionally, but currentConfiguration is only assigned after the first successful accept(...). DebuggerAgent.addReportToFlare() calls this method whenever the updater exists, so generating a flare before any remote config commit will throw a NullPointerException and fail diagnostics collection; the previous implementation returned an empty map in this state.

Useful? React with 👍 / 👎.

Collection<ProbeDefinition> build() {
return definitions;
}
configurationAcceptor.accept(REMOTE_CONFIG, probeByConfigId.values());
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Pass a snapshot instead of live map values on commit

commit() forwards probeByConfigId.values() directly, which is a live view backed by the mutable HashMap. ConfigurationUpdater.accept() stores that collection in definitionSources, so subsequent accept/remove mutations in this listener can leak into later configuration merges before a remote-config commit boundary (e.g., when CODE_ORIGIN or EXCEPTION sources call accept concurrently), causing probes to be applied/removed outside the intended transaction semantics.

Useful? React with 👍 / 👎.

@pr-commenter
Copy link
Copy Markdown

pr-commenter Bot commented May 4, 2026

Debugger benchmarks

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
ci_job_date 1777913276 1777913622
end_time 2026-05-04T16:49:22 2026-05-04T16:55:08
git_branch master jpbempel/remove-config-record-in-rc
git_commit_sha 014f0d2 4e6776d
start_time 2026-05-04T16:47:57 2026-05-04T16:53:43
See matching parameters
Baseline Candidate
ci_job_id 1654187829 1654187829
ci_pipeline_id 111295488 111295488
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
git_commit_date 1777912806 1777912806

Summary

Found 0 performance improvements and 0 performance regressions! Performance is the same for 9 metrics, 6 unstable metrics.

See unchanged results
scenario Δ mean agg_http_req_duration_min Δ mean agg_http_req_duration_p50 Δ mean agg_http_req_duration_p75 Δ mean agg_http_req_duration_p99 Δ mean throughput
scenario:noprobe unstable
[-22.805µs; +38.638µs] or [-7.753%; +13.135%]
unstable
[-32.984µs; +55.325µs] or [-9.820%; +16.472%]
unstable
[-41.403µs; +67.565µs] or [-11.793%; +19.245%]
unstable
[-194.254µs; +212.179µs] or [-15.457%; +16.884%]
same
scenario:basic unsure
[+0.084µs; +8.900µs] or [+0.032%; +3.356%]
same same unstable
[-156.011µs; +93.273µs] or [-14.098%; +8.428%]
unstable
[-207.203op/s; +85.252op/s] or [-8.288%; +3.410%]
scenario:loop same unsure
[-13.262µs; -1.221µs] or [-0.147%; -0.014%]
unsure
[+5.078µs; +15.478µs] or [+0.056%; +0.171%]
same same
Request duration reports for reports
gantt
    title reports - request duration [CI 0.99] : candidate=None, baseline=None
    dateFormat X
    axisFormat %s
section baseline
noprobe (335.874 µs) : 306, 366
.   : milestone, 336,
basic (299.357 µs) : 292, 306
.   : milestone, 299,
loop (8.993 ms) : 8988, 8998
.   : milestone, 8993,
section candidate
noprobe (347.044 µs) : 296, 398
.   : milestone, 347,
basic (298.379 µs) : 292, 305
.   : milestone, 298,
loop (8.986 ms) : 8980, 8992
.   : milestone, 8986,
Loading
  • baseline results
Scenario Request median duration [CI 0.99]
noprobe 335.874 µs [305.707 µs, 366.041 µs]
basic 299.357 µs [292.405 µs, 306.308 µs]
loop 8.993 ms [8.988 ms, 8.998 ms]
  • candidate results
Scenario Request median duration [CI 0.99]
noprobe 347.044 µs [295.921 µs, 398.167 µs]
basic 298.379 µs [291.842 µs, 304.916 µs]
loop 8.986 ms [8.98 ms, 8.992 ms]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp: debugger Dynamic Instrumentation tag: no release notes Changes to exclude from release notes type: refactoring

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant