argoproj / argoproj/argo-workflows

DX - Error message improvement

Open
#16,889 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

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.

Image

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.

Image

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.

Image

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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.