Avoid using canceled context in unpacker cleanup
Signed-off-by: Derek McGowan <derek@mcg.dev>
This commit is contained in:
parent
341a494c36
commit
0bc9f7b545
@ -342,7 +342,7 @@ func (u *Unpacker) unpack(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Abort the snapshot if commit does not happen
|
// Abort the snapshot if commit does not happen
|
||||||
abort := func() {
|
abort := func(ctx context.Context) {
|
||||||
if err := sn.Remove(ctx, key); err != nil {
|
if err := sn.Remove(ctx, key); err != nil {
|
||||||
log.G(ctx).WithError(err).Errorf("failed to cleanup %q", key)
|
log.G(ctx).WithError(err).Errorf("failed to cleanup %q", key)
|
||||||
}
|
}
|
||||||
@ -367,11 +367,11 @@ func (u *Unpacker) unpack(
|
|||||||
|
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
abort()
|
abort(context.Background()) // Cleanup context
|
||||||
return ctx.Err()
|
return ctx.Err()
|
||||||
case err := <-fetchErr:
|
case err := <-fetchErr:
|
||||||
if err != nil {
|
if err != nil {
|
||||||
abort()
|
abort(ctx)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
case <-fetchC[i-fetchOffset]:
|
case <-fetchC[i-fetchOffset]:
|
||||||
@ -379,16 +379,16 @@ func (u *Unpacker) unpack(
|
|||||||
|
|
||||||
diff, err := a.Apply(ctx, desc, mounts, unpack.ApplyOpts...)
|
diff, err := a.Apply(ctx, desc, mounts, unpack.ApplyOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
abort()
|
abort(ctx)
|
||||||
return fmt.Errorf("failed to extract layer %s: %w", diffIDs[i], err)
|
return fmt.Errorf("failed to extract layer %s: %w", diffIDs[i], err)
|
||||||
}
|
}
|
||||||
if diff.Digest != diffIDs[i] {
|
if diff.Digest != diffIDs[i] {
|
||||||
abort()
|
abort(ctx)
|
||||||
return fmt.Errorf("wrong diff id calculated on extraction %q", diffIDs[i])
|
return fmt.Errorf("wrong diff id calculated on extraction %q", diffIDs[i])
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = sn.Commit(ctx, chainID, key, opts...); err != nil {
|
if err = sn.Commit(ctx, chainID, key, opts...); err != nil {
|
||||||
abort()
|
abort(ctx)
|
||||||
if errdefs.IsAlreadyExists(err) {
|
if errdefs.IsAlreadyExists(err) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user