Empty backends omit the clusters key, so any candidate is routable
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 72/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- helm, kubernetes, rust
- Domain
- backend, networking
Research direction
Start in the praxis-gateway chart, where the clusters key for grid_site_route is rendered inside a with block over the backends, and inspect the filter’s has_route check for how it handles an absent cluster set. Then find the empty-backend chart test and make it require the clusters key in the generated config; done means an empty backend declaration produces an empty cluster list and its test checks for that key.
Written by the indexing model from the issue text.
Description
An empty backend list renders a gateway config with no clusters key, and the route filter reads an absent list as permission to route anywhere.
In the praxis-gateway chart the clusters key for grid_site_route sits inside a with block over the backends, so an empty list omits the key rather than emitting an empty one.
On the filter side the declared set is an Option, and has_route is clusters.is_none_or(|clusters| clusters.contains(&candidate.cluster)). None therefore makes every candidate routable. The distinction the config means to express, "this gateway declares no backends", is indistinguishable from "this gateway declares no restriction".
A candidate arriving from the operator can then be selected with no declared backend behind it. The request reaches the load balancer and fails there instead of getting the no-route response the empty declaration should have produced.
Emitting clusters: [] for the empty case keeps the two states apart. The empty-backend chart test should require the key rather than tolerate its absence.
Raised by CodeRabbit on the ODH sync PR opendatahub-io/praxis-ai-grid-operator#42 and verified against this repository.
- Dominant language
- Rust
- Stars
- 10
- Forks
- 24
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 121
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from praxis-proxy/grid
-
triage/needs-triage
Difficulty 1/5 1-3 hours Newbie friendliness 88/100
praxis-proxy/grid#406 ·
Maintainers usually reply within 1 day
-
triage/accepted
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
praxis-proxy/grid#200 ·
Maintainers usually reply within 1 day
-
bug triage/needs-triage
Difficulty 3/5 1-2 days Newbie friendliness 56/100
praxis-proxy/grid#411 ·
Maintainers usually reply within 1 day
-
bug triage/accepted
Difficulty 3/5 1-2 days Newbie friendliness 52/100
praxis-proxy/grid#409 · 1 comment ·
Maintainers usually reply within 1 day
-
feat(operator): reconcile A2A providers and discover Agent CardsPossibly taken @liavweiss claimed this 1 day ago. Opentriage/needs-triage
Difficulty 5/5 Over a week Newbie friendliness 25/100
praxis-proxy/grid#404 · 1 comment ·
Maintainers usually reply within 1 day
All issues in praxis-proxy/grid
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
home-assistant/installer#308 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
ProvableHQ/leo#29657 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
swc-project/swc-next#1053 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
nautechsystems/nautilus_trader#5387 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
NomicFoundation/edr#1872 ·
Maintainers usually reply within 2 days