Skip to content

Commit dbffbe8

Browse files
author
Tibor Vass
committed
builder-next: fix platform-specific behavior
Signed-off-by: Tibor Vass <tibor@docker.com>
1 parent beff0a5 commit dbffbe8

File tree

1 file changed

+10
-2
lines changed
  • builder/builder-next/adapters/containerimage

1 file changed

+10
-2
lines changed

builder/builder-next/adapters/containerimage/pull.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,13 @@ func (is *Source) resolveRemote(ctx context.Context, ref string, platform *ocisp
9393
dgst digest.Digest
9494
dt []byte
9595
}
96-
res, err := is.g.Do(ctx, ref, func(ctx context.Context) (interface{}, error) {
96+
p := platforms.DefaultSpec()
97+
if platform != nil {
98+
p = *platform
99+
}
100+
// key is used to synchronize resolutions that can happen in parallel when doing multi-stage.
101+
key := "getconfig::" + ref + "::" + platforms.Format(p)
102+
res, err := is.g.Do(ctx, key, func(ctx context.Context) (interface{}, error) {
97103
res := resolver.DefaultPool.GetResolver(is.RegistryHosts, ref, "pull", sm, g)
98104
dgst, dt, err := imageutil.Config(ctx, ref, res, is.ContentStore, nil, platform)
99105
if err != nil {
@@ -247,7 +253,9 @@ func (p *puller) resolveLocal() {
247253
}
248254

249255
func (p *puller) resolve(ctx context.Context, g session.Group) error {
250-
_, err := p.is.g.Do(ctx, "", func(ctx context.Context) (_ interface{}, err error) {
256+
// key is used to synchronize resolutions that can happen in parallel when doing multi-stage.
257+
key := "resolve::" + p.ref + "::" + platforms.Format(p.platform)
258+
_, err := p.is.g.Do(ctx, key, func(ctx context.Context) (_ interface{}, err error) {
251259
resolveProgressDone := oneOffProgress(ctx, "resolve "+p.src.Reference.String())
252260
defer func() {
253261
resolveProgressDone(err)

0 commit comments

Comments
 (0)