Skip to content

Context variables are being overwritten on join #112

@m4dcoder

Description

@m4dcoder

Given the following workflow where task1, task2, and task3 running in parallel and joining on task99

version: 1.0

description: A basic parallel workflow.

input:
  - x: false
  - y: false
  - z: false

output:
  - data:
      x: <% ctx().x %>
      y: <% ctx().y %>
      z: <% ctx().z %>

tasks:
  init:
    action: core.noop
    next:
      - do: task1, task2, task3

  task1:
    action: core.noop
    next:
      - publish: x=true
        do: task99

  task2:
    action: core.noop
    next:
      - publish: y=true
        do: task99

  task3:
    action: core.noop
    next:
      - publish: z=true
        do: task99

  task99:
    join: all
    action: core.noop

The expected output should be the following.

data:
  x: true
  y: true
  z: true

However, the actual output is this.

data:
  x: false
  y: false
  z: true

When executing task99, orquesta takes the final context from task1, task2, and task3 and merge them together to form the initial context for task99. The final context for task1 has x=true but y and z as false. The final context for task2 has y=true but x and z as false. And so forth for task3. When the context is merged sequentially, the final context for task3 overwrites those from task1 and task2 resulting in x and y being false.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions