diff --git a/builder/builder-next/exporter/export.go b/builder/builder-next/exporter/export.go index ee945a1150..e138a6f235 100644 --- a/builder/builder-next/exporter/export.go +++ b/builder/builder-next/exporter/export.go @@ -160,6 +160,10 @@ func (e *imageExporterInstance) Export(ctx context.Context, inp exporter.Source, return nil, layersDone(err) } + if err := ref.Extract(ctx, nil); err != nil { + return nil, err + } + diffIDs, err := e.opt.Differ.EnsureLayer(ctx, ref.ID()) if err != nil { return nil, layersDone(err) diff --git a/builder/builder-next/worker/worker.go b/builder/builder-next/worker/worker.go index 4cb559ede7..af980bfbfc 100644 --- a/builder/builder-next/worker/worker.go +++ b/builder/builder-next/worker/worker.go @@ -228,7 +228,7 @@ func (w *Worker) Exporter(name string, sm *session.Manager) (exporter.Exporter, } // GetRemote returns a remote snapshot reference for a local one -func (w *Worker) GetRemote(ctx context.Context, ref cache.ImmutableRef, createIfNeeded bool, _ compression.Type, _ session.Group) (*solver.Remote, error) { +func (w *Worker) GetRemote(ctx context.Context, ref cache.ImmutableRef, createIfNeeded bool, _ compression.Type, s session.Group) (*solver.Remote, error) { var diffIDs []layer.DiffID var err error if !createIfNeeded { @@ -240,6 +240,9 @@ func (w *Worker) GetRemote(ctx context.Context, ref cache.ImmutableRef, createIf if err := ref.Finalize(ctx); err != nil { return nil, err } + if err := ref.Extract(ctx, s); err != nil { + return nil, err + } diffIDs, err = w.Layers.EnsureLayer(ctx, ref.ID()) if err != nil { return nil, err