argoproj / argoproj/argo-workflows
skipped dag node marked configmap error after its child node finishes
- 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 have tested with the `:latest` image tag (i.e. `quay.io/argoproj/workflow-controller:latest`) and can confirm the issue still exists on `:latest`. If not, I have explained why, **in detail**, in my description below.
- [X] I have searched existing issues and could not find a match for this bug
- [ ] I'd like to contribute the fix myself (see [contributing guide](https://github.com/argoproj/argo-workflows/blob/main/docs/CONTRIBUTING.md))
### What happened/what did you expect to happen?
node `A` were initially marked `skipped` as expected and proceed to execute `B`

after `B` completed, `A` is marked as error due configmap not found.

this behaviour only happens to dag template. Step template works fine.
We expect if a node is skipped, it shouldn't matter if the parameter refers to an empty configmap
### Version(s)
3.5.2
### Paste a minimal workflow that reproduces the issue. We must be able to run the workflow; don't enter a workflows that uses private images.
```YAML
metadata:
name: a2
spec:
templates:
- name: echo2
container:
name: ''
image: alpine:3.7
command:
- echo
- abc
- name: echo1
inputs:
parameters:
- name: abc
valueFrom:
configMapKeyRef:
name: abc
key: abc
container:
name: ''
image: alpine:3.7
command:
- echo
- abc
- name: diamond
steps:
- - name: A
template: echo1
when: 1 == 0
- name: B
template: echo2
dependencies: [ A ]
entrypoint: diamond
```
### Logs from the workflow controller
```text
kubectl logs -n argo deploy/workflow-controller | grep ${workflow}
```
### Logs from in your workflow's wait container
```text
kubectl logs -n argo -c wait -l workflows.argoproj.io/workflow=${workflow},workflow.argoproj.io/phase!=Succeeded
```
Contributor guide
Research direction
Start with the minimal DAG workflow in the issue and reproduce it using the workflow-controller logs. Compare the skipped node's handling in the DAG template with the working step-template behavior, focusing on the configmap parameter resolution after child completion. Done means a skipped node remains skipped even when its referenced configmap is missing, with regression coverage for the provided workflow.
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
- 38/100