Skip to content

Commit

Permalink
Merge pull request containers#3956 from flouthoc/deep-copy-args
Browse files Browse the repository at this point in the history
imagebuildah,buildDockerfilesOnce: move deepcopy of args before we spawn goroutine
  • Loading branch information
openshift-merge-robot committed May 4, 2022
2 parents b669e4b + 3859013 commit 83e455f
Showing 1 changed file with 7 additions and 9 deletions.
16 changes: 7 additions & 9 deletions imagebuildah/build.go
Expand Up @@ -242,6 +242,12 @@ func BuildDockerfiles(ctx context.Context, store storage.Store, options define.B
if len(options.Platforms) > 1 {
logPrefix = "[" + platforms.Format(platformSpec) + "] "
}
// Deep copy args to prevent concurrent read/writes over Args.
argsCopy := make(map[string]string)
for key, value := range options.Args {
argsCopy[key] = value
}
platformOptions.Args = argsCopy
builds.Go(func() error {
thisID, thisRef, err := buildDockerfilesOnce(ctx, store, logger, logPrefix, platformOptions, paths, files)
if err != nil {
Expand Down Expand Up @@ -332,15 +338,7 @@ func BuildDockerfiles(ctx context.Context, store storage.Store, options define.B
return id, ref, nil
}

func buildDockerfilesOnce(ctx context.Context, store storage.Store, logger *logrus.Logger, logPrefix string, buildOpts define.BuildOptions, dockerfiles []string, dockerfilecontents [][]byte) (string, reference.Canonical, error) {
options := buildOpts
// Deep copy args to prevent concurrent read/writes over Args.
argsCopy := make(map[string]string)
for key, value := range options.Args {
argsCopy[key] = value
}
options.Args = argsCopy

func buildDockerfilesOnce(ctx context.Context, store storage.Store, logger *logrus.Logger, logPrefix string, options define.BuildOptions, dockerfiles []string, dockerfilecontents [][]byte) (string, reference.Canonical, error) {
mainNode, err := imagebuilder.ParseDockerfile(bytes.NewReader(dockerfilecontents[0]))
if err != nil {
return "", nil, errors.Wrapf(err, "error parsing main Dockerfile: %s", dockerfiles[0])
Expand Down

0 comments on commit 83e455f

Please sign in to comment.