Retry on partial live branch connections responses instead of showing partial results#1275
Merged
Merged
Conversation
A 200 response that flags an instance unreachable is a transient fan-out failure under load. Retry within the existing retry budget and fall back to the partial list on exhaustion, rather than surfacing the degraded result on the first poll.
When the client's retries can't clear a partial-instance failure, the TUI holds the last good frame and lets the staleness dot and captured age surface it, instead of replacing good data with the unreachable banner. First load (no prior frame) still shows the partial. Shared HasUnreachableInstance moves onto ConnectionList.
Selecting a row in the detail view's blocker tree prepended a caret and shifted the row text, a layout jump the table view doesn't have. Pad unselected rows by the caret width so the text stays put on selection.
The default (Postgres) view rendered via lgtable, which distributes the terminal width across columns and spreads them with large gaps when the content (notably the trailing QUERY column) is short. Route it through the same content-based width + manual padding layout the Vitess/processlist view already used (generalized to tightColumnWidths / renderTightRow), so columns stay packed at the left regardless of terminal width.
Remove the always-true i>=0 guard in the tight table renderer (carried over from the old lgtable header-sentinel path) and the redundant consecutiveErrors==0 assertion in the first-load partial test (the view assertions already cover that branch).
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 179b666. Configure here.
rafer
approved these changes
Jun 15, 2026
…pt timeout The partial-hold tests asserted bare PIDs against the rendered view, which includes a wall-clock timestamp; the PID '20' collided with the clock and failed CI at 20:09 UTC. Assert on the held list data instead. Also return the saved partial when a later retry attempt times out inside tryList (bugbot): the inter-attempt wait path already returned it, but the in-flight-timeout path discarded it and surfaced a failed-refresh error.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

This fixes a couple of rough edges:
Old:

New:

Tested locally with a QA run on an overloaded server.