Skip to content

Conversation

ktock
Copy link
Member

@ktock ktock commented Oct 3, 2025

Stargz snapshotter can't perform lazy pulling for images that contains empty layers. This PR fixes this issue.

Test image

echo "FROM denoland/deno:alpine-1.43.2@sha256:f51f2853d4235c5f223015fa6f045b1978a98aa883cf15cff405bfb95656f16e" | docker buildx build --builder=container --output type=image,name=ghcr.io/ktock/deno:alpine-1.43.2-esgz-emptylayer,push=true,oci-mediatype=true,compression=estargz,force-compression=true -

This contains an empty layer "sha256:6616d0fdd6dd05b2515b5c83800740fd633a514238fe7caa3f7eeda7f89ad988".

Test command

ctr-remote i rpull ghcr.io/ktock/deno:alpine-1.43.2-esgz-emptylayer

Expected behaviour

ctr-remote i rpull succeeds with lazy pulling.

Actual behaviour (w/o the patch in this PR)

{"error":"failed to resolve layer: failed to resolve layer \"sha256:6616d0fdd6dd05b2515b5c83800740fd633a514238fe7caa3f7eeda7f89ad988\" from \"ghcr.io/ktock/deno:alpine-1.43.2-esgz-emptylayer\": failed to get root node: failed to resolve target","key":"default/3/extract-810753276-MZr_ sha256:0cdf7f72928814ea0968bde6c77c9ab437273b6b6cd8aa0e2deef5eef67fd378","level":"warning","msg":"failed to prepare remote snapshot","parent":"sha256:5d8a07f4b7477daceba36222438bf44d68ab5e44fa143767f64529020b87d181","remote-snapshot-prepared":"false","time":"2025-10-03T14:55:38.075725569Z"}

Then it fallbacks to the normal pull.

@AkihiroSuda AkihiroSuda merged commit 1ddc823 into containerd:main Oct 14, 2025
44 checks passed
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.

2 participants