Avoid using canceled context in unpacker cleanup
Signed-off-by: Derek McGowan <derek@mcg.dev>
This commit is contained in:
		| @@ -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 | ||||||
| 			} | 			} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Derek McGowan
					Derek McGowan