Skip to content

fix: Show why a route leaves a network load balancer unserved - #755

Merged
scotwells merged 1 commit into
mainfrom
fix/nlb-status-surfaces-route-cause
Oct 27, 2026
Merged

scotwells merged 1 commit into
mainfrom
fix/nlb-status-surfaces-route-cause

Conversation

@scotwells

@scotwells scotwells commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Summary

A network load balancer whose route was rejected said only "No route serves this address", even though the route already knew why.

Users had to find the route to learn that, for example, another load balancer already owns its backend.

The load balancer's status now carries the route's reason and message, so the cause shows on the load balancer itself.

Test plan

  • A load balancer whose route conflicts with another load balancer's backend reports that conflict and names the route
  • Fixing the route clears the reason and the load balancer becomes Ready
  • Unit tests and lint pass

Related to #722
Related to datum-cloud/galactic#1138
Related to #718

When no route served an address, the load balancer's Programmed and Ready
conditions said NotServed with "No route serves this address", even when a
route was attached and had been rejected for a reason it already reported,
such as a backend socket another NLB owns. Users had to find and read the
route to learn why.

Key changes:
- Carry the reason and message of a rejected route onto the address and the
  load balancer's Programmed and Ready conditions
- Read only conditions the route sets itself, never ones that follow the
  load balancer's status
- Reconcile a load balancer when one of its routes changes
@scotwells
scotwells marked this pull request as ready for review October 27, 2026 17:04
@scotwells
scotwells requested a review from a team as a code owner October 27, 2026 17:04

@kevwilliams kevwilliams left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified the rejection is copied only from current-generation conditions on routes whose parent is this load balancer and listener, and a route update re-queues each load balancer it names.

@scotwells
scotwells merged commit 31719d7 into main Oct 27, 2026
11 checks passed
@scotwells
scotwells deleted the fix/nlb-status-surfaces-route-cause branch October 27, 2026 17:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants