argoproj / argoproj/argo-workflows

If workflow/pod is running status.finishedAtEpoch should be null

Open
#14,935 8 comments 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?

links.md in the docs states that if the workflow/pod is running then `status.finishedAt` is `null`. I assume `status.finishedAtEpoch` should also be `null`; however, it is not.

### 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: WorkflowTemplate
metadata:
name: test
spec:
serviceAccountName: argo-workflows
templates:
- name: main
inputs:
parameters:
- name: sleep
value: '{{workflow.parameters.sleep}}'
container:
name: debian
image: debian:12.12-slim
command:
- bash
- -c
args:
- echo "Sleeping {{inputs.parameters.sleep}} seconds..."; sleep {{inputs.parameters.sleep}}; echo "Done!"
resources: {}
entrypoint: main
arguments:
parameters:
- name: sleep
value: '60'
ttlStrategy:
secondsAfterCompletion: 3600
podGC:
strategy: OnPodCompletion
```

### Logs from the workflow controller

```text
Common labels: {"app":"argo-workflows-workflow-controller","cluster":"mgmt","component":"workflow-controller","container":"controller","filename":"/var/log/pods/argo-workflows_argo-workflows-workflow-controller-8cbd7cddd-dc5kt_0d806d50-e135-414b-8548-fcda94ce2edc/controller/0.log","instance":"argo-workflows","job":"argo-workflows/argo-workflows-workflow-controller","namespace":"argo-workflows","node_name":"mgmt-worker1","pod":"argo-workflows-workflow-controller-8cbd7cddd-dc5kt","stream":"stderr"}
Line limit: "1000 (27 displayed)"
Total bytes processed: "1.47 MB"

2025-10-16 08:16:56.823 time="2025-10-16T18:16:56.823Z" level=info msg="Workflow update successful" namespace=continuous-integration phase=Succeeded resourceVersion=290267964 workflow=test-mlghr
2025-10-16 08:16:56.814 time="2025-10-16T18:16:56.813Z" level=info msg="Marking workflow completed" namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:16:56.814 time="2025-10-16T18:16:56.813Z" level=info msg="Updated phase Running -> Succeeded" namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:16:56.814 time="2025-10-16T18:16:56.813Z" level=info msg=reconcileAgentPod namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:16:56.814 time="2025-10-16T18:16:56.813Z" level=info msg="TaskSet Reconciliation" namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:16:56.814 time="2025-10-16T18:16:56.813Z" level=info msg="Task-result reconciliation" namespace=continuous-integration numObjs=1 workflow=test-mlghr
2025-10-16 08:16:56.814 time="2025-10-16T18:16:56.812Z" level=info msg="Processing workflow" Phase=Running ResourceVersion=290267604 namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:15:54.458 time="2025-10-16T18:15:54.458Z" level=info msg="Workflow update successful" namespace=continuous-integration phase=Running resourceVersion=290267604 workflow=test-mlghr
2025-10-16 08:15:54.448 time="2025-10-16T18:15:54.448Z" level=info msg=reconcileAgentPod namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:15:54.448 time="2025-10-16T18:15:54.448Z" level=info msg="TaskSet Reconciliation" namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:15:54.448 time="2025-10-16T18:15:54.447Z" level=info msg="Task-result reconciliation" namespace=continuous-integration numObjs=1 workflow=test-mlghr
2025-10-16 08:15:54.448 time="2025-10-16T18:15:54.447Z" level=info msg="Processing workflow" Phase=Running ResourceVersion=290267541 namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:15:44.457 time="2025-10-16T18:15:44.457Z" level=info msg=reconcileAgentPod namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:15:44.457 time="2025-10-16T18:15:44.457Z" level=info msg="TaskSet Reconciliation" namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:15:44.457 time="2025-10-16T18:15:44.457Z" level=info msg="Task-result reconciliation" namespace=continuous-integration numObjs=0 workflow=test-mlghr
2025-10-16 08:15:44.457 time="2025-10-16T18:15:44.457Z" level=info msg="Processing workflow" Phase=Running ResourceVersion=290267541 namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:15:44.456 time="2025-10-16T18:15:44.456Z" level=info msg="Workflow update successful" namespace=continuous-integration phase=Running resourceVersion=290267541 workflow=test-mlghr
2025-10-16 08:15:44.448 time="2025-10-16T18:15:44.448Z" level=info msg=reconcileAgentPod namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:15:44.448 time="2025-10-16T18:15:44.448Z" level=info msg="TaskSet Reconciliation" namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:15:44.448 time="2025-10-16T18:15:44.448Z" level=info msg="Created pod: test-mlghr (test-mlghr)" namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:15:44.437 time="2025-10-16T18:15:44.437Z" level=warning msg="couldn't get boundaryTemplate through nodeName test-mlghr" namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:15:44.437 time="2025-10-16T18:15:44.437Z" level=info msg="Pod node test-mlghr initialized Pending" namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:15:44.437 time="2025-10-16T18:15:44.437Z" level=info msg="was unable to obtain node for , letting display name to be nodeName" namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:15:44.437 time="2025-10-16T18:15:44.437Z" level=warning msg="Node was nil, will be initialized as type Skipped" namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:15:44.437 time="2025-10-16T18:15:44.436Z" level=info msg="Updated phase -> Running" namespace=continuous-integration workflow=test-mlghr
2025-10-16 08:15:44.437 time="2025-10-16T18:15:44.436Z" level=info msg="Task-result reconciliation" namespace=continuous-integration numObjs=0 workflow=test-mlghr
2025-10-16 08:15:44.425 time="2025-10-16T18:15:44.424Z" level=info msg="Processing workflow" Phase= ResourceVersion=290267538 namespace=continuous-integration workflow=test-mlghr
```

### Logs from in your workflow's wait container

```text
Common labels: {"app":"test-mlghr","cluster":"mgmt","container":"wait","filename":"/var/log/pods/continuous-integration_test-mlghr_dfbc49a6-ac49-4ad1-8171-80163fb4697c/wait/0.log","job":"continuous-integration/test-mlghr","namespace":"continuous-integration","node_name":"mgmt-worker2","pod":"test-mlghr","stream":"stderr"}
Line limit: "1000 (9 displayed)"
Total bytes processed: "2.29 kB"

2025-10-16 08:16:46.812 time="2025-10-16T18:16:46.812Z" level=info msg="Alloc=9844 TotalAlloc=16279 Sys=23381 NumGC=4 Goroutines=7"
2025-10-16 08:16:46.806 time="2025-10-16T18:16:46.806Z" level=info msg="No output artifacts"
2025-10-16 08:16:46.806 time="2025-10-16T18:16:46.806Z" level=info msg="No output parameters"
2025-10-16 08:16:46.806 time="2025-10-16T18:16:46.806Z" level=info msg="No Script output reference in workflow. Capturing script output ignored"
2025-10-16 08:16:46.806 time="2025-10-16T18:16:46.806Z" level=info msg="Main container completed" error=""
2025-10-16 08:15:45.786 time="2025-10-16T18:15:45.786Z" level=info msg="Starting deadline monitor"
2025-10-16 08:15:45.776 time="2025-10-16T18:15:45.775Z" level=info msg="Executor initialized" deadline="0001-01-01 00:00:00 +0000 UTC" includeScriptOutput=false namespace=continuous-integration podName=test-mlghr templateName=main version="&Version{Version:v3.7.2,BuildDate:2025-09-11T14:56:36Z,GitCommit:cf605b548f1b0137836dde2032517707ba87c6ae,GitTag:v3.7.2,GitTreeState:clean,GoVersion:go1.24.4,Compiler:gc,Platform:linux/amd64,}"
2025-10-16 08:15:45.776 time="2025-10-16T18:15:45.775Z" level=info msg="Using executor retry strategy" Duration=1s Factor=1.6 Jitter=0.5 Steps=5
2025-10-16 08:15:45.772 time="2025-10-16T18:15:45.772Z" level=info msg="Starting Workflow Executor" version=v3.7.2
```

Contributor guide

Open the contributing guide

Research direction

Start by reading links.md and tracing where workflow and pod status fields are populated or serialized, especially status.finishedAt and status.finishedAtEpoch. Reproduce the provided workflow on v3.7.2 or latest, then verify that finishedAtEpoch is null while the workflow or pod is running and remains correct after completion.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.