Ensure docker ready#8245
Conversation
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (8245) and master. ✅ No regressions detected - check the details below Full Metrics ComparisonFakeDbCommand
HttpMessageHandler
Comparison explanationExecution-time benchmarks measure the whole time it takes to execute a program, and are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are highlighted in **red**. The following thresholds were used for comparing the execution times:
Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard. Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph). Duration chartsFakeDbCommand (.NET Framework 4.8)gantt
title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8245) - mean (69ms) : 67, 71
master - mean (70ms) : 68, 71
section Bailout
This PR (8245) - mean (73ms) : 72, 74
master - mean (73ms) : 72, 74
section CallTarget+Inlining+NGEN
This PR (8245) - mean (1,042ms) : 992, 1092
master - mean (1,045ms) : 999, 1090
FakeDbCommand (.NET Core 3.1)gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8245) - mean (107ms) : 105, 110
master - mean (108ms) : 105, 111
section Bailout
This PR (8245) - mean (108ms) : 107, 110
master - mean (109ms) : 107, 112
section CallTarget+Inlining+NGEN
This PR (8245) - mean (746ms) : 702, 791
master - mean (762ms) : 723, 801
FakeDbCommand (.NET 6)gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8245) - mean (95ms) : 93, 98
master - mean (95ms) : 93, 98
section Bailout
This PR (8245) - mean (96ms) : 94, 98
master - mean (97ms) : 95, 99
section CallTarget+Inlining+NGEN
This PR (8245) - mean (733ms) : 701, 766
master - mean (741ms) : 721, 761
FakeDbCommand (.NET 8)gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8245) - mean (95ms) : 92, 98
master - mean (95ms) : 92, 98
section Bailout
This PR (8245) - mean (95ms) : 94, 97
master - mean (96ms) : 94, 98
section CallTarget+Inlining+NGEN
This PR (8245) - mean (640ms) : 623, 657
master - mean (650ms) : 631, 669
HttpMessageHandler (.NET Framework 4.8)gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8245) - mean (195ms) : 191, 200
master - mean (196ms) : 192, 200
section Bailout
This PR (8245) - mean (199ms) : 196, 202
master - mean (199ms) : 196, 203
section CallTarget+Inlining+NGEN
This PR (8245) - mean (1,158ms) : 1094, 1222
master - mean (1,162ms) : 1090, 1234
HttpMessageHandler (.NET Core 3.1)gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8245) - mean (280ms) : 275, 285
master - mean (283ms) : 275, 291
section Bailout
This PR (8245) - mean (280ms) : 274, 285
master - mean (282ms) : 277, 287
section CallTarget+Inlining+NGEN
This PR (8245) - mean (949ms) : 906, 991
master - mean (946ms) : 902, 989
HttpMessageHandler (.NET 6)gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8245) - mean (274ms) : 265, 283
master - mean (274ms) : 268, 280
section Bailout
This PR (8245) - mean (273ms) : 268, 277
master - mean (274ms) : 269, 279
section CallTarget+Inlining+NGEN
This PR (8245) - mean (940ms) : 902, 979
master - mean (942ms) : 908, 975
HttpMessageHandler (.NET 8)gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8245) - mean (272ms) : 267, 277
master - mean (273ms) : 265, 282
section Bailout
This PR (8245) - mean (272ms) : 266, 278
master - mean (274ms) : 270, 279
section CallTarget+Inlining+NGEN
This PR (8245) - mean (840ms) : 811, 869
master - mean (839ms) : 815, 863
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BenchmarksBenchmark execution time: 2026-03-03 13:35:05 Comparing candidate commit fc90a44 in PR branch Found 12 performance improvements and 8 performance regressions! Performance is the same for 158 metrics, 14 unstable metrics. scenario:Benchmarks.Trace.ActivityBenchmark.StartStopWithChild netcoreapp3.1
scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleSimpleBody netcoreapp3.1
scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorMoreComplexBody net6.0
scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorSimpleBody net6.0
scenario:Benchmarks.Trace.AspNetCoreBenchmark.SendRequest net6.0
scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice net472
scenario:Benchmarks.Trace.CharSliceBenchmark.OriginalCharSlice net6.0
scenario:Benchmarks.Trace.CharSliceBenchmark.OriginalCharSlice netcoreapp3.1
scenario:Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearch net6.0
scenario:Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearchAsync net472
scenario:Benchmarks.Trace.GraphQLBenchmark.ExecuteAsync net472
scenario:Benchmarks.Trace.HttpClientBenchmark.SendAsync netcoreapp3.1
scenario:Benchmarks.Trace.ILoggerBenchmark.EnrichedLog net6.0
scenario:Benchmarks.Trace.Log4netBenchmark.EnrichedLog netcoreapp3.1
scenario:Benchmarks.Trace.SingleSpanAspNetCoreBenchmark.SingleSpanAspNetCore netcoreapp3.1
scenario:Benchmarks.Trace.SpanBenchmark.StartFinishTwoScopes netcoreapp3.1
|
## Summary Add Linux Docker readiness check to CI, mirroring the existing Windows approach (PR #8245). Targets transient cgroup/systemd/dbus failures — the largest CI flake category (10 commits blocked). ## Reason for change `retryCountOnTaskFailure` retries on the **same agent**, so if Docker is broken on that VM, all retries fail. This adds active recovery (service restart) before Docker commands run. [For instance](https://dev.azure.com/datadoghq/a51c4863-3eb4-4c5d-878a-58b41a049e4e/_apis/build/builds/198269/logs/9297): ``` 2026-03-25T15:05:08.0833114Z docker: Error response from daemon: failed to create task for container: Unavailable: error reading from server: EOF 2026-03-25T15:05:08.0833917Z 2026-03-25T15:05:08.0834644Z Run 'docker run --help' for more information ``` ## Changes - New `ensure-docker-ready-linux.sh`: waits for Docker daemon, attempts `systemctl restart docker` if the service is down (mirrors Windows `Restart-Service`), emits diagnostics on failure - `ensure-docker-ready.yml`: Linux readiness step added alongside existing Windows step - `run-in-docker.yml`: embedded `ensure-docker-ready.yml` call — automatically covers all ~27 Linux jobs that use this template. - `ultimate-pipeline.yml`: added readiness check to `integration_tests_windows_msi` job (the only uncovered Windows docker-compose caller) --------- Co-authored-by: datadog-official[bot] <214633350+datadog-official[bot]@users.noreply.github.com> Co-authored-by: Andrew Lock <[email protected]>
Summary of changes
Add a Docker daemon readiness check with active recovery before Windows smoke test stages in the CI pipeline.
Reason for change
Windows smoke tests flake with
pywintypes.error: (2, 'CreateFile', 'The system cannot find the file specified.')when the Docker named pipe (\.\pipe\docker_engine) isn't available.Note: There is a similar known regression in the
windows-2022hosted agent image, likely caused by the Docker 29.1.5 upgrade rolled out Feb 9, 2026.The built-in
retryCountOnTaskFailureretries on the same agent, so if the Docker daemon is broken on that VM, all retries fail.Implementation details
.azure-pipelines/steps/ensure-docker-ready.ymlthat:docker versionevery 10s for up to 300sRestart-Service docker -Force, up to 3 attempts)ultimate-pipeline.yml, afterinstall-docker-compose-v1.ymland before the firstdocker-compose buildstepcondition: eq(variables['Agent.OS'], 'Windows_NT')Test coverage
Other details
Affected stages:
nuget_installer_smoke_tests_windows,dotnet_tool_smoke_tests_windows,msi_installer_smoke_tests,dd_dotnet_msi_installer_smoke_tests,tracer_home_smoke_tests,fleet_installer_iis_smoke_tests.Related upstream issues: