Skip to content

estargz: Do not fail parsing empty layers - #2137

Merged
AkihiroSuda merged 1 commit into
containerd:mainfrom
ktock:emptylayer
Oct 14, 2025
Merged

AkihiroSuda merged 1 commit into
containerd:mainfrom
ktock:emptylayer

Conversation

@ktock

@ktock ktock commented Oct 3, 2025 •

Copy link
Copy Markdown
Member

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.

Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com>
@AkihiroSuda
AkihiroSuda merged commit 1ddc823 into containerd:main Oct 14, 2025
44 checks passed
@ktock
ktock deleted the emptylayer branch January 7, 2026 07:22
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