[DOCS-15222] Document Java agentless Feature Flags delivery - #38518
[DOCS-15222] Document Java agentless Feature Flags delivery#38518leoromanovsky wants to merge 5 commits into
Conversation
|
/review |
There was a problem hiding this comment.
🤖 Automated review by Claude. AI-generated; verify before acting.
Reviewed the Java Feature Flags updates and the surrounding pages that reference Java support. Findings are minor clarity/consistency issues — nothing blocking. See inline comments.
Reviewed ad0ff38485ded74706b1e47509b919e007eb5161 — workflow run
janine-c
left a comment
There was a problem hiding this comment.
Looks great! I have some minor writing notes, but nothing urgent. Let me know if you have any questions, and let me know if you need anything else!
| |---|---|---| | ||
| | `DD_FEATURE_FLAGS_CONFIGURATION_SOURCE_AGENTLESS_BASE_URL` | Datadog-managed endpoint | Overrides the agentless flag configuration endpoint or base URL. See [Use a custom agentless endpoint](#use-a-custom-agentless-endpoint). | | ||
| | `DD_FEATURE_FLAGS_CONFIGURATION_SOURCE_AGENTLESS_POLL_INTERVAL_SECONDS` | `30` | Positive integer that sets the time between completed polling attempts, capped at 3600 seconds. | | ||
| | `DD_FEATURE_FLAGS_CONFIGURATION_SOURCE_AGENTLESS_POLL_INTERVAL_SECONDS` | `30` | Positive integer that sets the time between completed polling attempts. Node.js caps values at 3600 seconds. Java does not apply this cap. | |
There was a problem hiding this comment.
| | `DD_FEATURE_FLAGS_CONFIGURATION_SOURCE_AGENTLESS_POLL_INTERVAL_SECONDS` | `30` | Positive integer that sets the time between completed polling attempts. Node.js caps values at 3600 seconds. Java does not apply this cap. | | |
| | `DD_FEATURE_FLAGS_CONFIGURATION_SOURCE_AGENTLESS_POLL_INTERVAL_SECONDS` | `30` | Positive integer that sets the time between completed polling attempts. Java does not limit attempts, while Node.js caps values at 3600 seconds. | |
We have a precedent going by now on this page to mention Java first, then Node.js, so it's easier to read if we just stick with it 🙂
| The Java SDK integrates with the Datadog Java tracer (`dd-trace-java`) and implements the [OpenFeature](https://openfeature.dev/) standard. | ||
|
|
||
| <div class="alert alert-info">If you're using Datadog APM and your application already has the Datadog Java SDK and Remote Configuration enabled, skip to <a href="#initialize-the-openfeature-provider">Initialize the OpenFeature provider</a>. You only need to add the OpenFeature dependencies and initialize the provider.</div> | ||
| <div class="alert alert-warning">In agentless mode, Java 1.65.0 supports configuration delivery and local flag evaluation only. It does not support evaluation metrics, exposure logging, or experimentation use cases.</div> |
There was a problem hiding this comment.
| <div class="alert alert-warning">In agentless mode, Java 1.65.0 supports configuration delivery and local flag evaluation only. It does not support evaluation metrics, exposure logging, or experimentation use cases.</div> | |
| <div class="alert alert-warning">Starting in version 1.65.0, in agentless mode, Java supports configuration delivery and local flag evaluation only. It does not support evaluation metrics, exposure logging, or experimentation use cases.</div> |
Borrowing the "Starting in..." language from earlier on the page, so it doesn't sound like this only applies to just the one version.
| [10]: /feature_flags/concepts/configuration_sources/#use-a-custom-agentless-endpoint | ||
| [11]: /feature_flags/concepts/configuration_sources/#migrate-an-existing-remote-configuration-setup | ||
| [12]: /feature_flags/concepts/configuration_sources/#configure-agentless-delivery | ||
| [13]: /feature_flags/concepts/configuration_sources/#use-agent-remote-configuration |
There was a problem hiding this comment.
| [13]: /feature_flags/concepts/configuration_sources/#use-agent-remote-configuration | |
| [13]: /feature_flags/concepts/configuration_sources/#use-agent-remote-configuration | |
| [14]: /getting_started/site/ |
For the above link I added
| - **Datadog Agent**: Version **7.55 or later** with [Remote Configuration][1] enabled | ||
| - **Datadog [API key][7]**: Configured on the Agent (not the application) for Remote Configuration | ||
| - A Datadog [API key][7] | ||
| - Your Datadog site |
There was a problem hiding this comment.
| - Your Datadog site | |
| - A Datadog [**API key**][7] | |
| - Your Datadog [**site**][14] |
For consistency, adding bolding (which I think is kind of unnecessary for this list, but that's neither here nor there) and a link in case customers want some more info on sites (I also suggested the link reference at the bottom of this file)
|
|
||
| ### 3. Agent: Verify Agent health and connectivity | ||
| 1. Confirm that `dd-java-agent` and `dd-openfeature` are version 1.65.0 or later. | ||
| 2. Confirm that `DD_FEATURE_FLAGS_ENABLED` is not set to `false`. |
There was a problem hiding this comment.
| 2. Confirm that `DD_FEATURE_FLAGS_ENABLED` is not set to `false`. | |
| 2. Confirm that `DD_FEATURE_FLAGS_ENABLED` is set to `true`. |
Can we say this, or is it possible for it to be null? Just thought that this would be a little easier to parse
| Cannot create backend API client since Agentless mode is disabled, and agent does not support EVP proxy | ||
| ``` | ||
| 1. Confirm that `DD_FEATURE_FLAGS_CONFIGURATION_SOURCE=remote_config` is set. During the migration window, `DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED=true` also selects Remote Configuration when no source is set. | ||
| 2. Confirm that `DD_FEATURE_FLAGS_ENABLED` is not set to `false`. |
There was a problem hiding this comment.
| 2. Confirm that `DD_FEATURE_FLAGS_ENABLED` is not set to `false`. | |
| 2. Confirm that `DD_FEATURE_FLAGS_ENABLED` is set to `true`. |
Same question as above 🙂
| ``` | ||
|
|
||
| If these messages are absent, verify `DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED=true` is set and the tracer started correctly. | ||
| With `remote_config`, the system starts during tracer initialization and does not wait for provider activation. If the applicable messages are absent, confirm that `DD_FEATURE_FLAGS_ENABLED` is not `false`. Then verify the selected source. |
There was a problem hiding this comment.
| With `remote_config`, the system starts during tracer initialization and does not wait for provider activation. If the applicable messages are absent, confirm that `DD_FEATURE_FLAGS_ENABLED` is not `false`. Then verify the selected source. | |
| With `remote_config`, the system starts during tracer initialization and does not wait for provider activation. If the applicable messages are absent, confirm that `DD_FEATURE_FLAGS_ENABLED` is `true`. Then verify the selected source. |
Same as above!
| ### 5. Flagging platform: Verify data appears in Datadog | ||
| ### 4. Flagging platform: Verify data appears in Datadog | ||
|
|
||
| <div class="alert alert-warning">Java 1.65.0 does not send exposure events or the <code>feature_flag.evaluations</code> metric without an Agent. Their absence in a no-Agent deployment is expected and does not indicate that configuration loading or local evaluation failed.</div> |
There was a problem hiding this comment.
| <div class="alert alert-warning">Java 1.65.0 does not send exposure events or the <code>feature_flag.evaluations</code> metric without an Agent. Their absence in a no-Agent deployment is expected and does not indicate that configuration loading or local evaluation failed.</div> | |
| <div class="alert alert-warning">Starting in version 1.65.0, Java does not send exposure events or the <code>feature_flag.evaluations</code> metric without an Agent. Their absence in a no-Agent deployment is expected and does not indicate that configuration loading or local evaluation failed.</div> |
Same as above, trying to avoid the misconception that this only applies to this one version
| [1]: /remote_configuration/ | ||
| [2]: /tracing/troubleshooting/connection_errors/ | ||
| [3]: /agent/troubleshooting/site/ | ||
| [4]: https://app.datadoghq.com/fleet |
There was a problem hiding this comment.
This PR removes the only reference to this link, so we can remove it here 🙂
| #### Experiment exposures | ||
|
|
||
| Exposures appear in Datadog only for flags associated with an experiment. Standard feature flags without an experiment association do not generate exposure events. If exposures are missing: | ||
| When the selected telemetry path supports exposures, exposures appear only for flags associated with an experiment. Standard feature flags do not generate exposure events. If exposures are missing: |
There was a problem hiding this comment.
| When the selected telemetry path supports exposures, exposures appear only for flags associated with an experiment. Standard feature flags do not generate exposure events. If exposures are missing: | |
| When the selected configuration path supports exposures, exposures appear only for flags associated with an experiment. Standard feature flags do not generate exposure events. If exposures are missing: |
Claude suggested using this instead of "telemetry path," which doesn't appear anywhere else and that people might misunderstand. I'm okay with either, but thought I'd flag it just in case.
Motivation
Java 1.65.0 moves default CDN delivery into
dd-openfeature. Customers no longer need the Java agent or a Lambda tracing layer for CDN evaluation.Remote Configuration remains agent-backed. Customers need clear and separate requirements for both sources.
Changes and Decisions
dd-openfeature1.65.0 as the minimum Java CDN version.dd-java-agentfrom Java CDN and serverless requirements.dd-openfeatureanddd-java-agentversions.Validation