Repository navigation
Resolve the Feature Flags settings like the SDK - #12977
PerfectSlayer wants to merge 3 commits into
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
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>
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 |
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.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
Refactoring only for the agent settings; no change to the supported values.
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