Skip to content

CI: stop dpkg starting redis-server (Windows/WSL install hang on 8.10) - #3145

Merged
mgravell merged 1 commit into
mainfrom
marc/ci-redis-8.10-install-hang
Jul 30, 2026
Merged

CI: stop dpkg starting redis-server (Windows/WSL install hang on 8.10)#3145
mgravell merged 1 commit into
mainfrom
marc/ci-redis-8.10-install-hang

Conversation

@mgravell

Copy link
Copy Markdown
Collaborator

The Windows job's "Install Redis" step began stalling indefinitely once server 8.10.0 hit packages.redis.io. Reproduced locally in a systemd-running jammy container: 8.8.1 installs in ~4s, 8.10.0 never returns.

The 8.10.0 redis-server deb ships the upstream redis.conf rather than the Debian-patched one (control scripts and the systemd unit are unchanged, so this doesn't show up in a package diff). It drops "supervised auto" and changes "dir /var/lib/redis" to "dir ./", which deadlocks the postinst: redis never sd_notify()s, so the Type=notify unit never leaves "activating" and "systemctl start" blocks; at TimeoutStartSec systemd SIGTERMs it, the final RDB save fails against the unit's read-only root so redis refuses to exit; and the unit's TimeoutStopSec=0 means systemd never SIGKILLs it.

We hand-start every server instance we need, so drop a policy-rc.d that tells invoke-rc.d/deb-systemd-invoke not to start services at all. This also stops the packaged unit racing us for 127.0.0.1:6379, which it would win or lose non-deterministically on runs where WSL came up with systemd.

Checklist

  • I fully and freely contribute this code in accordance with the project license (and am legally able to do so)
  • I take responsibility for this contribution's quality and correctness, including any portions produced with AI assistance (see CONTRIBUTING.md).

We hand-start every server instance the tests need, so drop a policy-rc.d
that tells invoke-rc.d/deb-systemd-invoke not to start services at all. The
packaged redis-server unit would otherwise race our own primary for
127.0.0.1:6379 on any run where WSL came up with systemd.

That also sidesteps an install hang we saw with the 8.10.0 package: its
redis.conf lost "supervised auto", so redis never sd_notify()s, the
Type=notify unit never leaves "activating", and the postinst's
"systemctl start" blocks (indefinitely, since redis then can't save its RDB
on SIGTERM and the unit disables the stop timeout). That is an upstream
packaging slip which they are already fixing, so this isn't a permanent
change in behaviour from 8.10 - but not starting the service is the right
thing for this job regardless.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@mgravell
mgravell force-pushed the marc/ci-redis-8.10-install-hang branch from 64be40d to c381cd4 Compare July 30, 2026 08:55
@mgravell
mgravell merged commit ad623db into main Jul 30, 2026
4 of 5 checks passed
@mgravell
mgravell deleted the marc/ci-redis-8.10-install-hang branch July 30, 2026 09:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant