argoproj / argoproj/argo-workflows
DX - Error message improvement
- Dominant language
- Go
- Stars
- 17k
- Forks
- 3.7k
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 138
Description
First of all, thank you for your hard work! I hadn’t used Argo Workflows for some time, so I was happy to see that several new releases had introduced significant improvements since then. That said, there’s always room for further improvement :)
# Summary
The way error messages are being reported on the UI (workflow instance level) is not very friendly and difficult to interpret depending on the many cases.
A great improvement would be to show the original (root cause) message rather than just a termination code that does not tell anything. There are situations where a same termination code is used (`143` below) for many different signals / external factors, without investigating it is difficult to get a grasp of what happened just from the UI.
An example is given below.
## Use Cases
Here is a workflow i ran to simulate an eviction due to a cordoned node for maintenance.
The workflow has a single step, and during this test it got retried once.
The first step in error is due to my test: i cordoned the node where the step was running to see whether with the latest Argo Workflow and the correct configuration that would be retried on a new node. And it worked as expected. The error message is `exit code 143` which can be pretty much anything.
Then i terminated the workflow not wait for the retry to finish. As a result the second retry goes in error and the message is exactly the same `exit code 143`, but this time i believe it's because of my manual termination.
I can figure out when checking the details at the workflow level that the end status is in error due to the Termination of the workflow being requested.
But making the distinction between the first failure and the second at the step level is impossible without having my testing context, and without re-investigating on the cluster what happened.
Improving the error feedback with the real cause would help quick diagnosing or understanding what may have gone wrong. This is just a simple example, but we can easily imagine a real production workload being hit by multiple different external factors at once, such as maintenance on nodes, Spot VM being taken away (thus pods being kicked out and then rescheduled somewhere else), or pods being aggressively moved to another node for scaling down by the auto-scaler.
All this could happen within a single workflow, yet we would not be able to know each distinct causes from the UI.
---
**Message from the maintainers**:
Love this feature request? Give it a 👍. We prioritise the proposals with the most 👍.
Contributor guide
Research direction
Start by tracing how workflow step termination causes are recorded and how the UI renders the step-level error message. Compare eviction, retry, and manual workflow termination cases, then define and test output that preserves the distinct root cause for each case. Done means the UI reports actionable causes instead of only the shared exit code.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, kubernetes
- Domain
- backend, frontend, observability
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100