Repository navigation
fix(core): default to Ryuk 0.14.0, which doesn't break concurrent image pulls - #1131
Open
thirtyseven wants to merge 1 commit into
Open
thirtyseven wants to merge 1 commit into
thirtyseven wants to merge 1 commit into
Conversation
…ge pulls Ryuk 0.8.1 cleans up each session with ImagesPrune filtered to the session label. On the containerd image store, the default since Docker 29, the daemon's ImagePrune deletes every in-flight pull's lease before it applies the filter (moby/moby#53321). Each test session that ends therefore corrupts the image pulls of every other process on the same daemon, which fail with "lease does not exist", "failed commit on ref" or "failed to extract layer". Ryuk 0.10.0 and later remove images one at a time with ImageRemove and never call ImagesPrune.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ryuk 0.8.1 cleans up each session with
ImagesPrunefiltered to the session label. On the containerd image store, the default since Docker 29, the daemon'sImagePrunedeletes every in-flight pull's lease before applying the filter (moby/moby#53321). So every test session that ends corrupts the image pulls of every other process on the same daemon, which fail withlease does not exist,failed commit on reforfailed to extract layer. On a CI runner with a few hundred testcontainers sessions a day this was a steady source of flaky pulls.Ryuk 0.10.0+ removes images one at a time with
ImageRemoveand never callsImagesPrune. This bumps the default to 0.14.0 and updates the docs.Reproduction (Docker 29.8.1, containerd snapshotter): start a large uncached
docker pull, then let a testcontainers session end while it runs. With Ryuk 0.8.1 the pull fails withfailed to extract layer … failed to Lchown; with 0.14.0 it completes. A filtered prune that matches nothing breaks the pull the same way:Newer Ryuk logs
msg=Startedinstead ofStarted!. Onmainthe startup wait doesn't run yet, and #1124 changes the pattern to\bStarted\b, so this PR doesn't touch it. With #1124 merged on top,tests/core/test_ryuk.pypasses (8 tests) against real Docker with Ryuk 0.14.0. Without it,test_wait_for_reaperfails the same way on 0.8.1 as on 0.14.0 on a Linux docker-proxy host (#1114: Ryuk never receives the session filter).🤖 Generated with Claude Code