Skip to content

Race condition on 2 sub Taskfile.yml if they define same var in certain situation #2839

@lwintermelon

Description

@lwintermelon

Description

file list

├── sub1
│   └── Taskfile.yml
├── sub2
│   └── Taskfile.yml
└── Taskfile.yml

sub1/Taskfile.yml

version: "3"

vars:
  ENV_RAW_JSON:
    sh: |
      echo '{ "DATE": "2024-06-01"}'
  ENV_JSON:
    ref: fromJson .ENV_RAW_JSON
  DATE: '{{ index .ENV_JSON "DATE" }}'
tasks:
  print:
    cmds:
      - echo "DATE {{.DATE}}"

sub2/Taskfile.yml

version: "3"

vars:
  DATE:
    sh: echo "2024-06-01"
tasks:
  print:
    cmds:
      - echo "DATE {{.DATE}}"

top level Taskfile.yml

version: '3'

includes:
  sub1:
    taskfile: ./sub1/Taskfile.yml
    dir: ./sub1
  sub2:
    taskfile: ./sub2/Taskfile.yml
    dir: ./sub2

Then run task sub1:print at the top-level in a loop; you'll soon trigger a race condition like this.

# while task sub1:print; do :; done
task: [sub1:print] echo "DATE 2024-06-01"
DATE 2024-06-01
task: [sub1:print] echo "DATE 2024-06-01"
DATE 2024-06-01
task: [sub1:print] echo "DATE 2024-06-01"
DATE 2024-06-01
template: :1:3: executing "" at <index .ENV_JSON "DATE">: error calling index: index of untyped nil

Version

3.50.0+d61d92df

Operating system

Linux and Windows

Experiments Enabled

No response

Example Taskfile

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions