Skip to content

differ fails after latest whiteout parent directories fix #2119

@tonistiigi

Description

@tonistiigi

Creating a separate issue for #2095 (comment) for better tracking.

After fix for adding the parent directories for whiteouts #2095 the originally reported testcase for that PR in buildkit fails to create diff tarballs, failing with error: failed to solve: rpc error: code = Unknown desc = failed calculaing diff pairs for exported snapshot: mount callback failed on /tmp/containerd-WithTempMount737087017: mount callback failed on /tmp/containerd-WithTempMount631635316: failed to write compressed diff: failed to create diff tar stream: stat /tmp/containerd-WithTempMount631635316/usr/share/aclocal-1.15: no such file or directory

stacktrace:

time="2018-02-09T11:56:52-08:00" level=error msg="/moby.buildkit.v1.Control/Solve returned error: stat /tmp/containerd-WithTempMount631635316/usr/share/aclocal-1.15: no such file or directory
failed to create diff tar stream
github.com/moby/buildkit/vendor/github.com/containerd/containerd/archive.WriteDiff
	/home/dev2/data/go/src/github.com/moby/buildkit/vendor/github.com/containerd/containerd/archive/tar.go:62
github.com/moby/buildkit/vendor/github.com/containerd/containerd/diff/walking.(*walkingDiff).Compare.func1.1
	/home/dev2/data/go/src/github.com/moby/buildkit/vendor/github.com/containerd/containerd/diff/walking/differ.go:99
github.com/moby/buildkit/vendor/github.com/containerd/containerd/mount.WithTempMount
	/home/dev2/data/go/src/github.com/moby/buildkit/vendor/github.com/containerd/containerd/mount/mount.go:71
github.com/moby/buildkit/vendor/github.com/containerd/containerd/diff/walking.(*walkingDiff).Compare.func1
	/home/dev2/data/go/src/github.com/moby/buildkit/vendor/github.com/containerd/containerd/diff/walking/differ.go:66
github.com/moby/buildkit/vendor/github.com/containerd/containerd/mount.WithTempMount
	/home/dev2/data/go/src/github.com/moby/buildkit/vendor/github.com/containerd/containerd/mount/mount.go:71
github.com/moby/buildkit/vendor/github.com/containerd/containerd/diff/walking.(*walkingDiff).Compare
	/home/dev2/data/go/src/github.com/moby/buildkit/vendor/github.com/containerd/containerd/diff/walking/differ.go:65
github.com/moby/buildkit/cache/blobs.GetDiffPairs.func2.1

Reproducing dockerfile (same as #2094):

FROM golang:1.9.3-alpine3.7
RUN apk add --no-cache --virtual .builddeps automake
RUN apk del .builddeps

It seems that the stat error comes from the includeParent() call that was added by the fix, but in this case, it calls stat with a path that doesn't exist anymore.

@dmcgowan

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions