argoproj / argoproj/argo-workflows
Variables not re-calculated in pod spec patch when re-submitting workflow
- Dominant language
- Go
- Stars
- 17k
- Forks
- 3.7k
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 138
Description
### Pre-requisites
- [X] I have double-checked my configuration
- [X] I can confirm the issues exists when I tested with `:latest`
- [ ] I'd like to contribute the fix myself (see [contributing guide](https://github.com/argoproj/argo-workflows/blob/master/docs/CONTRIBUTING.md))
### What happened/what you expected to happen?
Ran a workflow which uses {{workflow.name}} to upload artifacts to a unique location
Workflow name is stored in an env var in podSpecPatch so that it is available to all pods that are created
I then resubmitted the same workflow and noticed the env var with the workflow name was not updated in the new pod
This is a reopen of this closed issue - https://github.com/argoproj/argo-workflows/issues/8832
### Version
v3.4.3
### Paste a small workflow that reproduces the issue. We must be able to run the workflow; don't enter a workflows that uses private images.
```YAML
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: demo-
spec:
entrypoint: demo
templateDefaults:
podSpecPatch: |-
containers:
- name: main
env:
- name: workflow_name
value: {{workflow.name}}
templates:
- name: demo
dag:
tasks:
- name: workflow-test
template: run-test
- name: run-test
script:
image: ubuntu:18.04
imagePullPolicy: Always
command: [bash]
workingDir: "/src"
source: |
echo ${workflow_name}
```
### Logs from the workflow controller
```text
time="2022-05-24T17:23:25.547Z" level=info msg="Processing workflow" namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:25.554Z" level=info msg="Updated phase -> Running" namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:25.554Z" level=info msg="DAG node demo-7vm76 initialized Running" namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:25.554Z" level=info msg="All of node demo-7vm76.workflow-test dependencies [] completed" namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:25.554Z" level=info msg="Pod node demo-7vm76-3435674468 initialized Pending" namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:25.582Z" level=info msg="Created pod: demo-7vm76.workflow-test (demo-7vm76-3435674468)" namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:25.582Z" level=info msg="TaskSet Reconciliation" namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:25.582Z" level=info msg=reconcileAgentPod namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:25.595Z" level=info msg="Workflow update successful" namespace=argoci phase=Running resourceVersion=387173309 workflow=demo-7vm76
time="2022-05-24T17:23:35.584Z" level=info msg="Processing workflow" namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:35.584Z" level=info msg="Task-result reconciliation" namespace=argoci numObjs=0 workflow=demo-7vm76
time="2022-05-24T17:23:35.585Z" level=info msg="node changed" new.message= new.phase=Succeeded new.progress=0/1 nodeID=demo-7vm76-3435674468 old.message= old.phase=Pending old.progress=0/1
time="2022-05-24T17:23:35.585Z" level=info msg="Outbound nodes of demo-7vm76 set to [demo-7vm76-3435674468]" namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:35.585Z" level=info msg="node demo-7vm76 phase Running -> Succeeded" namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:35.585Z" level=info msg="node demo-7vm76 finished: 2022-05-24 17:23:35.585469398 +0000 UTC" namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:35.585Z" level=info msg="Checking daemoned children of demo-7vm76" namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:35.585Z" level=info msg="TaskSet Reconciliation" namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:35.585Z" level=info msg=reconcileAgentPod namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:35.585Z" level=info msg="Updated phase Running -> Succeeded" namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:35.585Z" level=info msg="Marking workflow completed" namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:35.585Z" level=info msg="Checking daemoned children of " namespace=argoci workflow=demo-7vm76
time="2022-05-24T17:23:35.591Z" level=info msg="cleaning up pod" action=deletePod key=argoci/demo-7vm76-1340600742-agent/deletePod
time="2022-05-24T17:23:35.598Z" level=info msg="Workflow update successful" namespace=argoci phase=Succeeded resourceVersion=387173484 workflow=demo-7vm76
time="2022-05-24T17:23:35.608Z" level=info msg="cleaning up pod" action=labelPodCompleted key=argoci/demo-7vm76-3435674468/labelPodCompleted
```
### Logs from in your workflow's wait container
```text
These are the logs from the workflow controller after re run
time="2022-05-24T17:23:57.305Z" level=info msg="Processing workflow" namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:23:57.313Z" level=info msg="Updated phase -> Running" namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:23:57.313Z" level=info msg="DAG node demo-mvdl5 initialized Running" namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:23:57.313Z" level=info msg="All of node demo-mvdl5.workflow-test dependencies [] completed" namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:23:57.313Z" level=info msg="Pod node demo-mvdl5-4274864227 initialized Pending" namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:23:57.349Z" level=info msg="Created pod: demo-mvdl5.workflow-test (demo-mvdl5-4274864227)" namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:23:57.350Z" level=info msg="TaskSet Reconciliation" namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:23:57.350Z" level=info msg=reconcileAgentPod namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:23:57.365Z" level=info msg="Workflow update successful" namespace=argoci phase=Running resourceVersion=387173887 workflow=demo-mvdl5
time="2022-05-24T17:24:07.349Z" level=info msg="Processing workflow" namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:24:07.349Z" level=info msg="Task-result reconciliation" namespace=argoci numObjs=0 workflow=demo-mvdl5
time="2022-05-24T17:24:07.349Z" level=info msg="node changed" new.message= new.phase=Succeeded new.progress=0/1 nodeID=demo-mvdl5-4274864227 old.message= old.phase=Pending old.progress=0/1
time="2022-05-24T17:24:07.350Z" level=info msg="Outbound nodes of demo-mvdl5 set to [demo-mvdl5-4274864227]" namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:24:07.350Z" level=info msg="node demo-mvdl5 phase Running -> Succeeded" namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:24:07.350Z" level=info msg="node demo-mvdl5 finished: 2022-05-24 17:24:07.350116856 +0000 UTC" namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:24:07.350Z" level=info msg="Checking daemoned children of demo-mvdl5" namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:24:07.350Z" level=info msg="TaskSet Reconciliation" namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:24:07.350Z" level=info msg=reconcileAgentPod namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:24:07.350Z" level=info msg="Updated phase Running -> Succeeded" namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:24:07.350Z" level=info msg="Marking workflow completed" namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:24:07.350Z" level=info msg="Checking daemoned children of " namespace=argoci workflow=demo-mvdl5
time="2022-05-24T17:24:07.355Z" level=info msg="cleaning up pod" action=deletePod key=argoci/demo-mvdl5-1340600742-agent/deletePod
time="2022-05-24T17:24:07.363Z" level=info msg="Workflow update successful" namespace=argoci phase=Succeeded resourceVersion=387174057 workflow=demo-mvdl5
time="2022-05-24T17:24:07.374Z" level=info msg="cleaning up pod" action=labelPodCompleted key=argoci/demo-mvdl5-4274864227/labelPodCompleted
```
Contributor guide
Research direction
No files or tests are named. Start in the workflow controller's podSpecPatch handling and trace how {{workflow.name}} is resolved during resubmission, using the supplied workflow to compare the original and new pods. Done means the resubmitted pod receives its new workflow name while the initial run remains correct.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, kubernetes
- Domain
- backend, devops
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100