Skip to content

Commit

Permalink
shallow copying EnvironmentVariables map before modification (flyteor…
Browse files Browse the repository at this point in the history
…g#5182)

Signed-off-by: Daniel Rammer <[email protected]>
  • Loading branch information
hamersaw authored and Jeinhaus committed Apr 8, 2024
1 parent 5080a71 commit 20e1a8f
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions flytepropeller/pkg/controller/nodes/array/execution_context.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,18 @@ func (a *arrayExecutionContext) GetExecutionConfig() v1alpha1.ExecutionConfig {

func newArrayExecutionContext(executionContext executors.ExecutionContext, subNodeIndex int) *arrayExecutionContext {
executionConfig := executionContext.GetExecutionConfig()
if executionConfig.EnvironmentVariables == nil {
executionConfig.EnvironmentVariables = make(map[string]string)

// since maps are all reference types in golang if we are going to modify the
// EnvironmentVariables for each subNode we need to at least shallow copy the map to ensure
// there are no concurrent modifications during parallelized evaluation of subNodes
environmentVariables := executionConfig.EnvironmentVariables
executionConfig.EnvironmentVariables = make(map[string]string)
for key, value := range environmentVariables {
executionConfig.EnvironmentVariables[key] = value
}
executionConfig.EnvironmentVariables[JobIndexVarName] = FlyteK8sArrayIndexVarName
executionConfig.EnvironmentVariables[FlyteK8sArrayIndexVarName] = strconv.Itoa(subNodeIndex)

executionConfig.MaxParallelism = 0 // hardcoded to 0 because parallelism is handled by the array node

return &arrayExecutionContext{
Expand Down

0 comments on commit 20e1a8f

Please sign in to comment.