feat(civisibility): add process-isolated test retries#5020
feat(civisibility): add process-isolated test retries#5020tonyredondo wants to merge 17 commits into
Conversation
Config Audit |
🎉 All green!🧪 All tests passed 🎯 Code Coverage (details) 🔗 Commit SHA: 2579888 | Docs | Datadog PR Page | Give us feedback! |
BenchmarksBenchmark execution time: 2026-07-14 11:53:20 Comparing candidate commit 2579888 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 326 metrics, 0 unstable metrics, 1 flaky benchmarks without significant changes.
|
Keep timeout setup failures terminal, preserve fatal subtest panic semantics, make lifecycle tests deterministic, and restrict feature documentation to the CI Visibility-owned area.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ce6a69affe
ℹ️ 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".
Support process-isolated retries for EFD, Attempt-to-Fix, coverage-aware children, and Orchestrion-owned tests. Preserve coordinated in-process fallback when a parallel EFD batch cannot launch a child.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0069e75455
ℹ️ 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".
|
|
||
| // CIVisibilityRetryExecutionModeEnvironmentVariable selects how retry attempts are executed. | ||
| // Supported values are "in_process" and "process". The default is "in_process". | ||
| CIVisibilityRetryExecutionModeEnvironmentVariable = "DD_CIVISIBILITY_RETRY_EXECUTION_MODE" |
There was a problem hiding this comment.
Document new retry process configuration
This adds a new public DD_CIVISIBILITY_RETRY_* configuration surface, but the commit does not update the top-level README.md or CONTRIBUTING.md. The repository AGENTS.md requires those docs for significant tracer customization features and important testing/building options; without them, users and contributors will not discover process retry mode or its validation guidance. Please add the required top-level documentation alongside these new env vars.
Useful? React with 👍 / 👎.
| "DD_CIVISIBILITY_INTERNAL_RETRY_PROCESS_ATTEMPT": {}, | ||
| "DD_CIVISIBILITY_INTERNAL_RETRY_PROCESS_CHILD": {}, |
There was a problem hiding this comment.
Keep retry transport keys out of supported config
Registering the private DD_CIVISIBILITY_INTERNAL_RETRY_PROCESS_* transport keys as supported makes a user-provided environment marker pass internal/env validation and activate child mode during package init. If DD_CIVISIBILITY_INTERNAL_RETRY_PROCESS_CHILD=true leaks into a normal test environment without the matching result-path/test-name fields, the gotesting child path treats the process as a malformed retry child and can clear workloads or exit instead of running the parent test session. These parent-to-child transport variables should be read through a private path rather than advertised in the supported configuration allowlist.
Useful? React with 👍 / 👎.
Summary
processexecution mode for Go test retriesRunM, and Orchestrion paths with focused unit and integration fixturesConfiguration
DD_CIVISIBILITY_RETRY_EXECUTION_MODE=processDD_CIVISIBILITY_RETRY_PROCESS_MAX_CONCURRENCYDD_CIVISIBILITY_RETRY_PROCESS_TIMEOUTThe default remains
in_process. Ineligible or pre-consumption setup cases use the existing in-process backend where safe; consumed process failures remain parent-owned retry attempts.Notes
go.modorgo.sumValidation
No additional tests or CI commands were run as part of the commit and publication step.