diff --git a/snapshot/snapshotter.go b/snapshot/snapshotter.go index 29f77d7e9..a7a33cc57 100644 --- a/snapshot/snapshotter.go +++ b/snapshot/snapshotter.go @@ -280,9 +280,7 @@ type Snapshotter interface { // A committed snapshot will be created under name with the parent of the // active snapshot. // - // Commit may be called multiple times on the same key. Snapshots created - // in this manner will all reference the parent used to start the - // transaction. + // After commit, the snapshot identified by key is removed. Commit(ctx context.Context, name, key string, opts ...Opt) error // Remove the committed or active snapshot by the provided key. diff --git a/snapshot/testsuite/testsuite.go b/snapshot/testsuite/testsuite.go index 5ce069efd..1ff7101e8 100644 --- a/snapshot/testsuite/testsuite.go +++ b/snapshot/testsuite/testsuite.go @@ -144,6 +144,11 @@ func checkSnapshotterBasic(ctx context.Context, t *testing.T, snapshotter snapsh assert.Equal(t, "", si.Parent) assert.Equal(t, snapshot.KindCommitted, si.Kind) + _, err = snapshotter.Stat(ctx, preparing) + if err == nil { + t.Fatalf("%s should no longer be available after Commit", preparing) + } + next := filepath.Join(work, "nextlayer") if err := os.MkdirAll(next, 0777); err != nil { t.Fatalf("failure reason: %+v", err) @@ -187,6 +192,11 @@ func checkSnapshotterBasic(ctx context.Context, t *testing.T, snapshotter snapsh assert.Equal(t, committed, si2.Parent) assert.Equal(t, snapshot.KindCommitted, si2.Kind) + _, err = snapshotter.Stat(ctx, next) + if err == nil { + t.Fatalf("%s should no longer be available after Commit", next) + } + expected := map[string]snapshot.Info{ si.Name: si, si2.Name: si2,