radius-project / radius-project/dashboard

Partial Radius inventory failures are silently presented as complete results

Open
#369 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug triaged
Dominant language
TypeScript
Stars
18
Forks
13
Avg merge
1d 12h
Merged PRs (30d)
10

Description

Bug information

Steps to reproduce
  1. Open an applications or environments list while both the Applications.Core and Radius.Core namespace requests are enabled.
  2. Make one namespace request succeed and the other fail, for example with a 403, 404, or unavailable upstream.
Observed behavior

RadiusApiImpl.listMultipleTypes() uses Promise.allSettled(), merges fulfilled results, and throws only when every request fails. When one namespace fails, the caller receives an ordinary successful { value: [...] } result with no indication that the inventory is partial and no retry path. A failed discovery can therefore be presented as a complete or empty list.

Desired behavior

Return an explicit partial-result state that identifies failed branches and supports retry. Loading, empty, partial, stale, and error must remain distinguishable; authorization failures must not trigger an automatic connection switch.

Workaround

There is no UI workaround. Operators must inspect network requests to discover that part of the inventory failed.

Additional context

Discovered while implementing Phase 2 error requirement ER-08 in docs/design/2026-09-dashboard-plugin-test-plan.md. A characterization test will pin the current silent-partial behavior until this issue is fixed.

Would you like to support us?
  • Yes, I would like to support you

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at RadiusApiImpl.listMultipleTypes() and read ER-08 in docs/design/2026-09-dashboard-plugin-test-plan.md, then review the characterization test referenced in the issue. Done means failed branches are identified with a retry path, loading, empty, partial, stale, and error states remain distinct, and authorization failures do not trigger an automatic connection switch.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api, frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.