Repository navigation
Add Azure Durable Functions tracing support - #12618
gh-worker-dd-mergequeue-cf854d[bot] merged 21 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. |
|
@codex review |
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. |
🛡️ Codex Security Review · Automatically triggeredSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 376c24d851
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
AlexeyKuznetsov-DD
left a comment
There was a problem hiding this comment.
Left several comments. My main concern that core classes changed, we need to double check on that.
mcculls
left a comment
There was a problem hiding this comment.
The overall handling of spans is unusual - especially the error spans created after the fact. Some of this logic is what's leading to needing several @Advice.Local slots.
Left various comments with suggested improvements/cleanup, but no obvious blockers from apm-sdk-capabilities. (After the refactoring, none of the files here are actually owned by us so this PR is not gated by our review.)
lucaspimentel
left a comment
There was a problem hiding this comment.
Approved from the apm-serverless pov:
- Span naming and metadata: Verified against the .NET Azure Functions instrumentation for cross-runtime consistency: resource name, trigger values, and tags match .NET; operation name, span type (serverless), component, and span kind match the sibling
azure-functions-1.2.2module, with the correct v1 default for Azure Functions. Service name is left to the default function-app naming, which is right for serverless. - Sampling behavior: honors the W3C sampled flag, which differs from .NET's durable propagation (which force-keeps on a positive Datadog decision and clears Azure's implicit rejection). This divergence is deliberate and agreed: the core team's position is that the sampled flag must be respected, and the Java host's
telemetryMode: OpenTelemetryrequirement covers the drop scenario. The PR description now matches the implementation. - Replay suppression and error retention: Successful replays produce no span while user work during a replay stays attached to the trace; failed activities/sub-orchestrations retain the replay with proper error tags; Durable SDK control-flow exceptions are correctly not treated as failures.
I did not look at JVM-specific performance and allocation characteristics of the new code paths or Muzzle wiring and internal-class coupling details beyond what's already discussed in review threads.
|
/merge |
|
View all feedbacks in Devflow UI.
The expected merge time in
Build pipeline has failing jobs for 83b7bd4: What to do next?
DetailsSince those jobs are not marked as being allowed to fail, the pipeline will most likely fail. |
|
/merge |
|
View all feedbacks in Devflow UI.
The expected merge time in
|
What Does This Do
Adds tracing support for Azure Durable Functions running on the Java worker:
FunctionExecutionMiddleware.Motivation
The existing Azure Functions instrumentation covers HTTP entry points, but Java Durable orchestrators and activities execute through worker middleware and were not represented in the distributed trace. This left the asynchronous Durable workflow invisible after the starter function scheduled an instance.
This instrumentation connects the Java Durable workflow to the originating trace and avoids emitting a duplicate orchestrator span for every successful replay.
Validation
./gradlew :dd-java-agent:instrumentation:azure-functions-worker-2.7:spotlessCheck./gradlew :dd-java-agent:instrumentation:azure-functions-worker-2.7:test./gradlew :dd-java-agent:instrumentation:azure-functions-worker-2.7:forkedTest./gradlew :dd-java-agent:instrumentation:azure-functions-worker-2.7:latestDepTest./gradlew :dd-trace-core:test --tests datadog.trace.core.propagation.ExtractedContextTest./gradlew :dd-java-agent:shadowJar :dd-java-agent:verifyAgentJarContents :dd-java-agent:verifyAgentJarIntegrationsNo error
With error
Additional Notes
2.7+and was validated withdurabletask-azure-functions1.0.1.Contributor Checklist
type: featureandinst: azure-functionslabels.CODEOWNERS.