Repository navigation
Restore the agent Feature Flags behaviors through the bridge - #12978
Merged
Merged
Conversation
This was referenced Oct 21, 2026
Contributor
Contributor
🟢 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. |
PerfectSlayer
force-pushed
the
bbujon/ffe-parity
branch
from
October 21, 2026 14:09
693118e to
53ccb2c
Compare
PerfectSlayer
force-pushed
the
bbujon/ffe-parity
branch
from
October 21, 2026 14:20
53ccb2c to
5f15227
Compare
PerfectSlayer
force-pushed
the
bbujon/ffe-parity
branch
from
October 21, 2026 14:30
5f15227 to
0c22bad
Compare
PerfectSlayer
force-pushed
the
bbujon/ffe-parity
branch
from
October 22, 2026 08:19
0c22bad to
f0385c5
Compare
PerfectSlayer
force-pushed
the
bbujon/ffe-parity
branch
from
October 22, 2026 08:41
f0385c5 to
a330717
Compare
PerfectSlayer
force-pushed
the
bbujon/ffe-parity
branch
from
October 22, 2026 11:02
a330717 to
3476c35
Compare
PerfectSlayer
force-pushed
the
bbujon/ffe-parity
branch
from
October 22, 2026 11:13
3476c35 to
b21466b
Compare
AlexeyKuznetsov-DD
approved these changes
Oct 28, 2026
AlexeyKuznetsov-DD
left a comment
Contributor
There was a problem hiding this comment.
LGTM, posted 2 minor comments I found with Codex
Port the agent-side behaviors of the removed writers: send each event batch once with proxy discovery and recovery, and the Java SDK identity headers (#12477, #12575); flush the SDK pending events at agent shutdown, with or without tracing; declare the SDK settings the agent exposes (#12884, #12774). Move the Feature Flags shutdown tests from the agent tests to the OpenFeature smoke tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y errors The SDK dropped malformed Remote Configuration documents and the agent swallowed subscriber failures, so the poller acknowledged documents the SDK never applied. The SDK now rejects malformed documents by throwing, and the agent rethrows the first subscriber failure once every subscriber is notified, so the poller reports an apply error as before the switch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e Flags The poller reference-counts start and stop calls, but closing the Feature Flags Remote Configuration service no longer stopped it, keeping it polling once Feature Flags closed and leaking a reference on each restart. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…on is disabled The Feature Flags shutdown hook was only registered when tracing was disabled, but the tracing shutdown path also relies on the shutdown instrumentation, which can be disabled on its own. The hook is now always registered once the SDK subscribes to the shutdown; stopping is idempotent, so it does nothing after the tracing shutdown path already stopped Feature Flags. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The test rewrote the SPI classes to check the runtime SPI guard. The japicmp bridge SPI check covers SPI compatibility once the SPI is released. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Once dd-openfeature 1.69.0 is released, the japicmpBridgeV1 task checks the frozen bridge.v1 SPI, so the runtime check of the helpers becomes redundant. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…0 release Reference APMLP-1512 in the TODOs waiting for the first SDK release with the agent bridge, and prepare the muzzle pass directive of the bridge instrumentation, to enable once 1.69.0 is published. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Remote Configuration without the Datadog Java agent is out of scope. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit ef95143)
(cherry picked from commit dc27b62)
(cherry picked from commit c8ab5f6)
…fore the SDK The agent registers the Feature Flags product at startup, so the first document usually arrives before any SDK subscribes and is acknowledged without validation. When the first subscriber rejects it on replay, the service now registers the product again, which drops its cached documents, so the next poll delivers the document again and reports the rejection as an apply error, without depending on the Remote Configuration core. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eported The smoke application can now register its provider on request instead of at startup, so the test delivers a malformed flag configuration before the SDK subscribes, then checks the agent reports it as not applied once the SDK rejects it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PerfectSlayer
force-pushed
the
bbujon/ffe-parity
branch
from
October 29, 2026 08:12
d37c389 to
25f652f
Compare
The agent shutdown notifies the SDK before the JVM shutdown hooks only when the tracing shutdown instrumentation runs, otherwise from a JVM shutdown hook. Document what always holds: the notification comes before the agent releases its Feature Flags resources. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Feature Flagging shutdown hook is now always registered once the SDK subscribes, whether tracing is enabled or not, so the tracing disabled variant tested the same behavior. Keep one test, with the default setup. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 30, 2026
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.
What Does This Do
Restores, through the bridge, the agent-side behaviors of the removed Feature Flags writers:
DD-EVP-ORIGIN/DD-EVP-ORIGIN-VERSIONidentity headers sent with every event, through the proxy and direct intake alike.Motivation
Keeps the behavior master has today with the agent-coupled writers (APMLP-1512).
Additional Notes
Files
EventProxy(+ test)DirectIntakeTransport(+ test)AgentShutdownSource,JavaAgentBridge.shutdown()Backend.subscribeShutdownFeatureFlagsBackend, agentFeatureFlaggingSystem(+ tests)dd-trace-apiFeatureFlaggingConfig,metadata/supported-configurations.jsonAbstractOpenFeatureShutdownSmokeTest+ 2 smoke testsAbstractSmokeTestShutdownInstrumentationTestJavaAgentBridge(+DDOpenFeatureIntegrationDisabledForkedTest),dd-openfeatureanddd-openfeature-1.69buildsdd-openfeature1.69.0 is released (thejapicmpBridgeV1check then covers it);TODO APMLP-1512markers for the 1.69.0 release, including the prepared muzzlepassdirectiveRemoteConfigurationService, libRemoteConfigServiceImpl(+ tests),bridge.v1ConfigurationSource/ gatewayBackendJavadocRemoteConfigServiceImpl.close()stops the reference-counted poller it startedStack
The full change is in #12709. It was split into this stack to ease the review.
Jira ticket: APMLP-1512
🤖 Generated with Claude Code