diff --git a/pkg/snapshot/snapshot_test.go b/pkg/snapshot/snapshot_test.go index 3a1ec7353..2fa6bb104 100644 --- a/pkg/snapshot/snapshot_test.go +++ b/pkg/snapshot/snapshot_test.go @@ -371,6 +371,36 @@ func TestSnasphotPreservesFileOrder(t *testing.T) { } } +func TestSnapshotOmitsUnameGname(t *testing.T) { + testDir, snapshotter, cleanup, err := setUpTestDir() + testDirWithoutLeadingSlash := strings.TrimLeft(testDir, "/") + defer cleanup() + if err != nil { + t.Fatal(err) + } + + tarPath, err := snapshotter.TakeSnapshotFS() + + f, err := os.Open(tarPath) + if err != nil { + t.Fatal(err) + } + tr := tar.NewReader(f) + for { + hdr, err := tr.Next() + if err == io.EOF { + break + } + if err != nil { + t.Fatal(err) + } + if hdr.Uname != "" || hdr.Gname != "" { + t.Fatalf("Expected Uname/Gname for %s to be empty: Uname = '%s', Gname = '%s'", hdr.Name, hdr.Uname, hdr.Gname) + } + } + +} + func setupSymlink(dir string, link string, target string) error { return os.Symlink(target, filepath.Join(dir, link)) } diff --git a/pkg/util/tar_util.go b/pkg/util/tar_util.go index 213ef68e3..15c4e933d 100644 --- a/pkg/util/tar_util.go +++ b/pkg/util/tar_util.go @@ -84,6 +84,11 @@ func (t *Tar) AddFileToTar(p string) error { hdr.Name = p } + // rootfs may not have been extracted when using cache, preventing uname/gname from resolving + // this makes this layer unnecessarily differ from a cached layer which does contain this information + hdr.Uname = "" + hdr.Gname = "" + hardlink, linkDst := t.checkHardlink(p, i) if hardlink { hdr.Linkname = linkDst