@@ -68,7 +68,7 @@ func (cm *cacheManager) GetOrInitVolume(
68
68
}
69
69
parentID := ""
70
70
71
- rec , err := func () (* cacheRecord , error ) {
71
+ rec , err := func () (_ * cacheRecord , rerr error ) {
72
72
cm .mu .Lock ()
73
73
defer cm .mu .Unlock ()
74
74
@@ -90,8 +90,9 @@ func (cm *cacheManager) GetOrInitVolume(
90
90
if err != nil {
91
91
return nil , fmt .Errorf ("failed to create lease: %w" , err )
92
92
}
93
+ // TODO: this defer should run outside this function too
93
94
defer func () {
94
- if err != nil {
95
+ if rerr != nil {
95
96
ctx := context .WithoutCancel (ctx )
96
97
if err := cm .LeaseManager .Delete (ctx , leases.Lease {
97
98
ID : l .ID ,
@@ -131,6 +132,10 @@ func (cm *cacheManager) GetOrInitVolume(
131
132
if err := initializeMetadata (rec .cacheMetadata , rec .parentRefs , opts ... ); err != nil {
132
133
return nil , err
133
134
}
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
+ }
134
139
135
140
cm .records [id ] = rec
136
141
return rec , nil
@@ -139,6 +144,9 @@ func (cm *cacheManager) GetOrInitVolume(
139
144
return nil , fmt .Errorf ("failed to get volume cache record: %w" , err )
140
145
}
141
146
}()
147
+ if err != nil {
148
+ return nil , err
149
+ }
142
150
143
151
releaseFunc , err := cm .volumeSnapshotter .Acquire (ctx , id , sharingMode )
144
152
if err != nil {
0 commit comments