Jens-G opened a new pull request, #3578: URL: https://github.com/apache/thrift/pull/3578
## Harden the MSVC build workflow against transient Docker daemon unavailability ### Problem The `build` job (`.github/workflows/msvc.yml`, `runs-on: windows-2025`) compiles inside a Windows Docker container. GitHub-hosted Windows runners occasionally start the job before the Docker engine is listening on `\\.\pipe\docker_engine`, so the first `docker` command fails instantly: ``` ##[error]Docker pull failed with unexpected error. failed to connect to the docker API at npipe:////./pipe/docker_engine; ... Write-Error: Container build failed with exit code 1 Write-Error: LastTest.log not found at C:\thrift-build\Testing\Temporary\LastTest.log ``` No `ctest` runs, so the "Check test results" step reports the missing `LastTest.log`. The ~27s total (vs. minutes for a real MSVC build) confirms the container never started. This is a runner-infrastructure timing issue, independent of the PR under test — it recurs on unrelated PRs while every other gate (including the Linux `compiler` job) passes. ### Change - **Wait for Docker daemon**: a new step polls `docker version` until the engine responds (up to 4 min) before any `docker` command, failing with a clear message if it never comes up. - **Retry `docker pull`** (cached-image step) up to 3× on transient registry/network/daemon errors; a `not found` result still falls through to building the image from scratch. - **Retry `docker run`** (build step) up to 3×, but **only when the daemon was unreachable** — a genuine build or test failure is propagated immediately and never triggers a costly rebuild. Output is streamed via `Tee-Object`, so the build log still appears live. ### Notes - CI-only change; no library code is affected. The workflow YAML was validated; the PowerShell logic is straightforward, but this can't be exercised locally (it needs a Windows runner with Docker-in-Windows) — the real proof is the job staying green across runs once merged. - GitHub Issues are disabled on this repo, so this is filed as a standalone CI fix; happy to attach a JIRA ticket if maintainers prefer one for tracking. 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
