You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
subscriptions-channels.yml fails on the current [self-hosted, Linux] runner pool: every testcontainer-based test panics immediately with
Failed to start PostgreSQL container: Client(Init(SocketNotFoundError("/var/run/docker.sock")))
The runners no longer expose a local Docker socket. subscriptions-smoke.yml adapted to this by setting DOCKER_HOST: ${{ secrets.DOCKER_HOST }} (plus DOCKER_HOST_IP) so testcontainers talk to a remote Docker host, but subscriptions-channels.yml never got that env block — its jobs run with no Docker configuration at all, so testcontainers falls back to /var/run/docker.sock and fails.
Evidence
Run 30062816042 (dispatched 2026-07-24 against feat/cluster-capable-state): all 15 Unit tests (<matrix>) jobs failed identically — 125 tests failed in 0.02s, every panic at crates/persistence/tests/postgres_tests.rs:761 with the SocketNotFoundError above (1,875 occurrences across the log).
A --failed re-run reproduced the exact same failure on all 15 jobs, ruling out a single bad runner.
The failing set includes long-standing tests (e.g. postgres_integration_update_resource), not just newly added ones — the branch's code is not the trigger.
The same persistence test suites passed in the main CI run (30062676960) on this branch; CI's Test Rust job uses unpinned [self-hosted] runners, so it can land on a machine that still has a Docker socket.
testcontainers-rs honors DOCKER_HOST, and get_host() in the tests resolves to the remote Docker host, so the persistence/subscriptions testcontainer suites should work the same way the smoke workflow's do. Alternatively (or additionally), the runner pool could restore a local Docker socket, which would also un-break any other testcontainer consumer that pins [self-hosted, Linux].
Impact
subscriptions-channels.yml is workflow_dispatch-only, so this doesn't block PRs, but it makes the channel integration matrix impossible to run — including as a validation gate for subscriptions changes (it was part of the post-merge validation sweep for PR feat(cluster): make HFS cluster-capable behind a load balancer #269, where everything else passed).
Any other workflow that pins [self-hosted, Linux] and uses testcontainers without DOCKER_HOST will fail the same way.
Summary
subscriptions-channels.ymlfails on the current[self-hosted, Linux]runner pool: every testcontainer-based test panics immediately withThe runners no longer expose a local Docker socket.
subscriptions-smoke.ymladapted to this by settingDOCKER_HOST: ${{ secrets.DOCKER_HOST }}(plusDOCKER_HOST_IP) so testcontainers talk to a remote Docker host, butsubscriptions-channels.ymlnever got that env block — its jobs run with no Docker configuration at all, so testcontainers falls back to/var/run/docker.sockand fails.Evidence
feat/cluster-capable-state): all 15Unit tests (<matrix>)jobs failed identically — 125 tests failed in 0.02s, every panic atcrates/persistence/tests/postgres_tests.rs:761with theSocketNotFoundErrorabove (1,875 occurrences across the log).--failedre-run reproduced the exact same failure on all 15 jobs, ruling out a single bad runner.postgres_integration_update_resource), not just newly added ones — the branch's code is not the trigger.[self-hosted]runners, so it can land on a machine that still has a Docker socket.Why this is infra drift, not branch breakage
unit-testsjob'scargo test ... -p helios-persistencelist dates back to the WebSocket channel work (feat(subscriptions): implement WebSocket channel — Phase 2 #62, April 2026).feature/subscriptions(run 25202533588).feat/cluster-capable-state(PR feat(cluster): make HFS cluster-capable behind a load balancer #269) touches this workflow; the failure will reproduce on any branch dispatched today.Proposed fix
Add the same Docker env wiring
subscriptions-smoke.ymluses (.github/workflows/subscriptions-smoke.yml:20-21) tosubscriptions-channels.yml:testcontainers-rs honors
DOCKER_HOST, andget_host()in the tests resolves to the remote Docker host, so the persistence/subscriptions testcontainer suites should work the same way the smoke workflow's do. Alternatively (or additionally), the runner pool could restore a local Docker socket, which would also un-break any other testcontainer consumer that pins[self-hosted, Linux].Impact
subscriptions-channels.ymlisworkflow_dispatch-only, so this doesn't block PRs, but it makes the channel integration matrix impossible to run — including as a validation gate for subscriptions changes (it was part of the post-merge validation sweep for PR feat(cluster): make HFS cluster-capable behind a load balancer #269, where everything else passed).[self-hosted, Linux]and uses testcontainers withoutDOCKER_HOSTwill fail the same way.