Repository navigation
Resolve the Feature Flags settings like the SDK - #12977
Conversation
This comment has been minimized.
This comment has been minimized.
🟢 Java Benchmark SLOs — All performance SLOs passed
PR vs. master results
Commit: Load and DaCapo benchmarks can be triggered manually in the GitLab pipeline. Results will appear in the Benchmarking Platform UI after completion. |
a0b4cb0 to
13f62ff
Compare
13f62ff to
918c24c
Compare
918c24c to
4489a78
Compare
4489a78 to
2605ead
Compare
2605ead to
cf0d03a
Compare
cf0d03a to
6c85344
Compare
e22560c to
bbdf441
Compare
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
More details
The settings retain their existing keys and parsing behavior, and repository callers are consistently updated for the enum return type.
🤖 Bits Code Review · Commit bbdf441
9039dab to
1b3a770
Compare
994142b to
cd834fd
Compare
There was a problem hiding this comment.
The new event proxy can replay ambiguously delivered batches and permanently disable event delivery after failed startup discovery. Proxy origin metadata and Remote Configuration error acknowledgements also regress.
🤖 Bits Code Review · Commit 994142b
Findings that could not be posted inline
products/feature-flagging/feature-flagging-lib/src/main/java/com/datadog/featureflag/EventProxy.java:81
[P2] Recover event delivery after failed startup discovery
If the Datadog Agent is unreachable during SDK initialization, discovery can return null clients, but resolved permanently caches that failure. JavaAgentBridge then returns no transport, and FeatureFlagsRuntime omits both event pipelines when direct fallback is unavailable. Agent recovery can restore flag configuration while event delivery remains disabled until runtime recreation. Recovery requires preserving a transport and retrying discovery, not merely resetting this flag.
React: 👍 useful · 👎 wrong · 😕 unclear · 👀 right, but not acting on it
What each reaction means
- 👍 Useful: correct, and you're fixing it or will.
- 👎 Wrong: the finding is incorrect, for example the bug can't happen or the code was misread.
- 😕 Unclear: you can't tell what it means or why it matters.
- 👀 Right, not acting: correct, but intended, out of scope for this PR, a known risk, or too minor.
🤖 Bits Code Review · Open Bits AI session
products/feature-flagging/feature-flagging-lib/src/main/java/com/datadog/featureflag/RemoteConfigServiceImpl.java:44
[P2] Report rejected flag configurations as apply errors
For a malformed FFE_FLAGS document, this identity deserializer succeeds while the SDK's RemoteConfigurationService catches the parsing failure and returns normally. ProductState therefore reports APPLY_STATE_ACKNOWLEDGED although the SDK rejected the update and retained its previous configuration. The former parser propagated these failures as errors. Preserve a validation-error path through the SDK and bridge to the poller.
React: 👍 useful · 👎 wrong · 😕 unclear · 👀 right, but not acting on it
What each reaction means
- 👍 Useful: correct, and you're fixing it or will.
- 👎 Wrong: the finding is incorrect, for example the bug can't happen or the code was misread.
- 😕 Unclear: you can't tell what it means or why it matters.
- 👀 Right, not acting: correct, but intended, out of scope for this PR, a known risk, or too minor.
🤖 Bits Code Review · Open Bits AI session
cd834fd to
c888b07
Compare
#12978 removes the cached discovery failure: the Remote Configuration route uses the fixed EVP v2 endpoint, and the agentless route without direct intake rediscovers the proxy at most once a minute. |
#12978 reports them as apply errors again: the SDK |
46270f2 to
6ca9473
Compare
There was a problem hiding this comment.
More details
The bridge explicitly conveys agent-side disables to the SDK, including settings from configuration sources the SDK cannot read. The completed static review identified no reportable regression; runtime behavior remains unverified.
🤖 Bits Code Review · Commit 6ca9473
Move the Feature Flags settings to dd-trace-api, remove the feature-flagging-config module, and expose the configuration source as an enum parsed like the SDK does. Check the agent and the SDK resolve the settings alike. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e SDK The bridge was only installed when the agent enabled Feature Flags, so when only an agent configuration source the SDK cannot read (stable configuration, configuration file) disabled them, the SDK fell back to its own settings and started agentless. The bridge is now installed regardless, and reports Feature Flags as disabled when the agent configuration disables them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
6ca9473 to
000b6e2
Compare
What Does This Do
Resolves the Feature Flags settings in the agent like the
dd-openfeatureSDK does:dd-trace-apiand removes thefeature-flagging-configmodule.ConfigurationResolutionParityTest, checking the agent and the SDK resolve enablement and source alike, including padded values.DisabledAgentBridge), as the SDK cannot read every agent configuration source (stable configuration, configuration file).Motivation
The agent and the SDK must agree on the configuration source (APMLP-1512). Done after the compatibility PR: released SDKs read the old settings class from the agent until they are guarded.
Additional Notes
No change to the supported values. A disable set only in an agent configuration source the SDK cannot read now keeps the SDK disabled instead of starting it agentless.
Stack
The full change is in #12709. It was split into this stack to ease the review.
Jira ticket: APMLP-1512
🤖 Generated with Claude Code