Repository navigation
Add per-subject evaluation telemetry opt-out - #12884
gh-worker-dd-mergequeue-cf854d[bot] merged 3 commits into
Conversation
🟢 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. |
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 opt-out gates evaluation telemetry independently of exposure logging and flag resolution. The completed static review identified no reportable defects.
🤖 Bits Code Review · Commit 39ace88
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
More details
The evaluation telemetry gate leaves exposure handling and flag results intact. The completed static review identified no actionable defects.
🤖 Bits Code Review · Commit 3787306
|
/merge |
|
View all feedbacks in Devflow UI.
The expected merge time in
|
Port master #12884 to the dd-openfeature SDK: the dd_evaluation_telemetry_opt_out context attribute suppresses evaluation events, evaluation metrics and span enrichment for the subject when enabled by Provider.Options.enableEvaluationTelemetryOptOutParameter or DD_FEATURE_FLAGS_EVALUATION_TELEMETRY_PER_SUBJECT_OPT_OUT_ENABLED. Exposures are unchanged. Provider.Options now defaults to a 30 seconds initialization timeout, as on master.
…gent Declare DD_FEATURE_FLAGS_EVALUATION_TELEMETRY_PER_SUBJECT_OPT_OUT_ENABLED in the agent Feature Flags configuration and document the opt-out in the SDK README, completing the port of master #12884. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gent Declare DD_FEATURE_FLAGS_EVALUATION_TELEMETRY_PER_SUBJECT_OPT_OUT_ENABLED in the agent Feature Flags configuration and document the opt-out in the SDK README, completing the port of master #12884. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gent Declare DD_FEATURE_FLAGS_EVALUATION_TELEMETRY_PER_SUBJECT_OPT_OUT_ENABLED in the agent Feature Flags configuration and document the opt-out in the SDK README, completing the port of master #12884. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
feat(ffe): Port the per-subject evaluation telemetry opt-out to the SDK Port master #12884 to the dd-openfeature SDK: the dd_evaluation_telemetry_opt_out context attribute suppresses evaluation events, evaluation metrics and span enrichment for the subject when enabled by Provider.Options.enableEvaluationTelemetryOptOutParameter or DD_FEATURE_FLAGS_EVALUATION_TELEMETRY_PER_SUBJECT_OPT_OUT_ENABLED. Exposures are unchanged. Provider.Options now defaults to a 30 seconds initialization timeout, as on master. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> feat(ffe): Send each Feature Flags event batch once Port the SDK part of master #12477: direct intake no longer retries, and the event proxy fallback switches to direct intake for good on the first proxy failure, replaying the batch only when the proxy definitively did not receive it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> feat(ffe): Flush pending Feature Flags events at application shutdown The runtime now stops at application shutdown: through the new optional ShutdownSource bridge component when the Datadog Java agent provides it, so the agent flushes the SDK before the JVM shutdown hooks run, or from a JVM shutdown hook otherwise. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> refactor(ffe): Make the bridge shutdown component abstract like the others No released agent implements the bridge yet, so the shutdown component needs no default method for compatibility. The no-op bridge returns null, like the other optional components. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> fix(ffe): Share one shutdown budget between the Feature Flags event pipelines The runtime closed the flag evaluation pipeline, waiting up to 5 seconds, before even signaling the exposure pipeline, then waited up to another 800 ms: a stalled final POST could hold the JVM exit for almost 6 seconds and starve the exposures flush. Port the two-phase shutdown of the agent writers: signal both pipelines, then await both against one 800 ms deadline, without interrupting a current or final HTTP request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> fix(ffe): Fall back to a JVM shutdown hook when the agent shutdown subscription fails A failing agent shutdown subscription escaped the shared runtime acquisition after the runtime started, leaking it and failing the provider initialization. Fall back to the JVM shutdown hook instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> fix(ffe): Prevent startup failures with older Java agents by returning caller defaults when the RC connector is unavailable Co-authored-by: sarahchen6 <sarah.chen@datadoghq.com> Co-authored-by: bruce.bujon <bruce.bujon@datadoghq.com>
…gent Declare DD_FEATURE_FLAGS_EVALUATION_TELEMETRY_PER_SUBJECT_OPT_OUT_ENABLED in the agent Feature Flags configuration and document the opt-out in the SDK README, completing the port of master #12884. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Motivation
Applications need to evaluate flags while excluding selected subjects from evaluation telemetry. This adds the same explicit, per-subject control as the client SDKs. Applications keep ownership of their consent rules.
Changes and Decisions
Provider.Options.enableEvaluationTelemetryOptOutParameter(boolean), disabled by default.DD_FEATURE_FLAGS_EVALUATION_TELEMETRY_PER_SUBJECT_OPT_OUT_ENABLED=true. An explicit provider option overrides deployment configuration, including false.trueatdd_evaluation_telemetry_opt_out. Missing, false, null, and other types preserve telemetry.flowchart TD C[Per-evaluation subject context] --> P[Datadog provider] P --> E[Evaluate flag] E --> R[Return flag result] E --> X[Existing exposure handling: unchanged] E --> G{Evaluation telemetry opted out?} G -->|Yes| S[Skip new evaluation telemetry] G -->|No| T[Evaluation EVP, OTel metrics, flag span enrichment]The parameter name is identical across languages. This control does not opt a subject out of experiments or exposure logging.
The module's existing coverage gate still fails on the unchanged base and this branch. This PR does not change its thresholds.