argoproj / argoproj/argo-workflows

Syntatically valid workflow containing an empty list in `steps` is never marked as completed

Open
#15,091 1 comment 0 reactions 0 assignees View on GitHub
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?

While generating a workflow I mistakenly generated one which contains an empty list. This workflow apparently runs to completion, successfully completing the `hello` step, however the workflow is never marked as completed and perpetually remains in the "Running" phase.

I have not tested with the latest argo CRDs/images because I am running close to the latest version and I can find no mention of this issue in the release notes.

### Version(s)

v3.7.2

### Paste a minimal workflow that reproduces the issue. We must be able to run the workflow; don't enter a workflow that uses private images.

```YAML
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: hello-world-
namespace: argo-workflows
labels:
workflows.argoproj.io/archive-strategy: "false"
annotations:
workflows.argoproj.io/description: |
This is a simple hello world example.
spec:
entrypoint: hello-world

templates:
- name: hello-world
steps:
- [] #empty list
- - name: hello
inline:
container:
image: argoproj/argosay:v2
```

### 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

Open the contributing guide

Research direction

Start by applying the minimal YAML workflow from the issue with the workflow-controller and wait-container logs enabled. Read the resulting workflow-controller logs and compare the workflow's phase after the empty steps list and successful hello step; done means the workflow reaches a completed terminal phase instead of remaining Running.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, kubernetes
Domain
backend, devops
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.