Skip to content

Commit

Permalink
imagebuildah: prevent race cause c/storage does not persist names
Browse files Browse the repository at this point in the history
When running concurrent builds references to layers are changed and
c/storage does not accounts for names so use ID where possible.

[NO NEW TESTS NEEDED]
[NO TESTS NEEDED]

Signed-off-by: Aditya R <arajan@redhat.com>
  • Loading branch information
flouthoc committed Feb 22, 2022
1 parent b2897f0 commit 544e75e
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 9 deletions.
16 changes: 8 additions & 8 deletions imagebuildah/executor.go
Original file line number Diff line number Diff line change
Expand Up @@ -744,18 +744,18 @@ func (b *Executor) Build(ctx context.Context, stages imagebuilder.Stages) (image
if dest, err := b.resolveNameToImageRef(b.output); err == nil {
switch dest.Transport().Name() {
case is.Transport.Name():
img, err := is.Transport.GetStoreImage(b.store, dest)
_, img, err := util.FindImage(b.store, "", b.systemContext, imageID)
if err != nil {
return imageID, ref, errors.Wrapf(err, "error locating just-written image %q", transports.ImageName(dest))
}
if len(b.additionalTags) > 0 {
if err = util.AddImageNames(b.store, "", b.systemContext, img, b.additionalTags); err != nil {
return imageID, ref, errors.Wrapf(err, "error setting image names to %v", append(img.Names, b.additionalTags...))
}
logrus.Debugf("assigned names %v to image %q", img.Names, img.ID)

b.additionalTags = append(b.additionalTags, dest.DockerReference().String())
if err = util.AddImageNames(b.store, "", b.systemContext, img, b.additionalTags); err != nil {
return imageID, ref, errors.Wrapf(err, "error setting image names to %v", append(img.Names, b.additionalTags...))
}
// Report back the caller the tags applied, if any.
img, err = is.Transport.GetStoreImage(b.store, dest)
logrus.Debugf("assigned names %v to image %q", img.Names, img.ID)

_, img, err = util.FindImage(b.store, "", b.systemContext, imageID)
if err != nil {
return imageID, ref, errors.Wrapf(err, "error locating just-written image %q", transports.ImageName(dest))
}
Expand Down
2 changes: 1 addition & 1 deletion imagebuildah/stage_executor.go
Original file line number Diff line number Diff line change
Expand Up @@ -1366,7 +1366,7 @@ func (s *StageExecutor) tagExistingImage(ctx context.Context, cacheID, output st
if err != nil {
return "", nil, errors.Wrapf(err, "error computing digest of manifest for image %q", cacheID)
}
img, err := is.Transport.GetStoreImage(s.executor.store, dest)
_, img, err := util.FindImage(s.executor.store, "", s.executor.systemContext, cacheID)
if err != nil {
return "", nil, errors.Wrapf(err, "error locating new copy of image %q (i.e., %q)", cacheID, transports.ImageName(dest))
}
Expand Down

0 comments on commit 544e75e

Please sign in to comment.