Skip to content

Commit 0c9b05f

Browse files
committed
Fix image usage calculation error
Including snapshotter usage in total calculation should be gated by the option `snapshotter` boolean. Signed-off-by: Phil Estes <estesp@linux.vnet.ibm.com>
1 parent 4e08c2d commit 0c9b05f

2 files changed

Lines changed: 18 additions & 15 deletions

File tree

image.go

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -203,24 +203,26 @@ func (i *image) Usage(ctx context.Context, opts ...UsageOpt) (int64, error) {
203203
desc.Size = info.Size
204204
}
205205

206-
for k, v := range info.Labels {
207-
const prefix = "containerd.io/gc.ref.snapshot."
208-
if !strings.HasPrefix(k, prefix) {
209-
continue
210-
}
206+
if config.snapshots {
207+
for k, v := range info.Labels {
208+
const prefix = "containerd.io/gc.ref.snapshot."
209+
if !strings.HasPrefix(k, prefix) {
210+
continue
211+
}
211212

212-
sn := i.client.SnapshotService(k[len(prefix):])
213-
if sn == nil {
214-
continue
215-
}
213+
sn := i.client.SnapshotService(k[len(prefix):])
214+
if sn == nil {
215+
continue
216+
}
216217

217-
u, err := sn.Usage(ctx, v)
218-
if err != nil {
219-
if !errdefs.IsNotFound(err) && !errdefs.IsInvalidArgument(err) {
220-
return nil, err
218+
u, err := sn.Usage(ctx, v)
219+
if err != nil {
220+
if !errdefs.IsNotFound(err) && !errdefs.IsInvalidArgument(err) {
221+
return nil, err
222+
}
223+
} else {
224+
usage += u.Size
221225
}
222-
} else {
223-
usage += u.Size
224226
}
225227
}
226228
}

image_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ func TestImageUsage(t *testing.T) {
180180

181181
// Pin image name to specific version for future fetches
182182
imageName = imageName + "@" + image.Target().Digest.String()
183+
defer client.ImageService().Delete(ctx, imageName, images.SynchronousDelete())
183184

184185
// Fetch single platforms, but all manifests pulled
185186
if _, err := client.Fetch(ctx, imageName, WithPlatformMatcher(testPlatform), WithAllMetadata()); err != nil {

0 commit comments

Comments
 (0)