Skip to content

Commit 160689c

Browse files
committed
fix bug that caused mutable refs to have size 0
Signed-off-by: Erik Sipsma <[email protected]>
1 parent 058da20 commit 160689c

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

cache/manager.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1440,14 +1440,18 @@ func (cm *cacheManager) DiskUsage(ctx context.Context, opt client.DiskUsageInfo)
14401440
func(d *client.UsageInfo) {
14411441
eg.Go(func() error {
14421442
cm.mu.Lock()
1443-
ref, err := cm.get(ctx, d.ID, nil, NoUpdateLastUsed)
1443+
// TODO: note about this change, do upstream too? May be real bug fix
1444+
// previous code was getting equalImmutable of mutable refs and setting size to 0
1445+
// ref, err := cm.get(ctx, d.ID, nil, NoUpdateLastUsed)
1446+
rec, err := cm.getRecord(ctx, d.ID, NoUpdateLastUsed)
14441447
cm.mu.Unlock()
14451448
if err != nil {
14461449
d.Size = 0
14471450
return nil
14481451
}
1449-
defer ref.Release(context.TODO())
1450-
s, err := ref.size(ctx)
1452+
// defer ref.Release(context.TODO())
1453+
// s, err := ref.size(ctx)
1454+
s, err := rec.size(ctx)
14511455
if err != nil {
14521456
return err
14531457
}

cache/manager_dagger.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func (cm *cacheManager) GetOrInitVolume(
6868
}
6969
parentID := ""
7070

71-
rec, err := func() (*cacheRecord, error) {
71+
rec, err := func() (_ *cacheRecord, rerr error) {
7272
cm.mu.Lock()
7373
defer cm.mu.Unlock()
7474

@@ -90,8 +90,9 @@ func (cm *cacheManager) GetOrInitVolume(
9090
if err != nil {
9191
return nil, fmt.Errorf("failed to create lease: %w", err)
9292
}
93+
// TODO: this defer should run outside this function too
9394
defer func() {
94-
if err != nil {
95+
if rerr != nil {
9596
ctx := context.WithoutCancel(ctx)
9697
if err := cm.LeaseManager.Delete(ctx, leases.Lease{
9798
ID: l.ID,
@@ -131,6 +132,10 @@ func (cm *cacheManager) GetOrInitVolume(
131132
if err := initializeMetadata(rec.cacheMetadata, rec.parentRefs, opts...); err != nil {
132133
return nil, err
133134
}
135+
// this is needed because for some reason snapshotID is an imageRefOption
136+
if err := setImageRefMetadata(rec.cacheMetadata, opts...); err != nil {
137+
return nil, fmt.Errorf("failed to append image ref metadata to ref %s: %w", id, err)
138+
}
134139

135140
cm.records[id] = rec
136141
return rec, nil
@@ -139,6 +144,9 @@ func (cm *cacheManager) GetOrInitVolume(
139144
return nil, fmt.Errorf("failed to get volume cache record: %w", err)
140145
}
141146
}()
147+
if err != nil {
148+
return nil, err
149+
}
142150

143151
releaseFunc, err := cm.volumeSnapshotter.Acquire(ctx, id, sharingMode)
144152
if err != nil {

0 commit comments

Comments
 (0)