frontend: stop the reassignment wizard failing silently when the bandwidth throttle is set - #2644
Open
SpicyPete wants to merge 1 commit into
Open
frontend: stop the reassignment wizard failing silently when the bandwidth throttle is set#2644SpicyPete wants to merge 1 commit into
SpicyPete wants to merge 1 commit into
Conversation
"Start Reassignment" did nothing visible whenever the bandwidth throttle was
above the slider minimum. Redpanda rejects per-broker property patches
("INVALID_CONFIG: Setting broker properties on named brokers is unsupported")
per resource inside an HTTP 200, so `setTrafficLimit` throws, and all three
layers dropped it: `catch (_err) { closeToast(toastRef); return false; }`,
then `if (!success) return false`, then `if (success) {…}` with no `else`.
The loading toast flashed and the wizard sat on step 3, with nothing in the
console either — while the sibling handler's copy promised "See console for
more information".
Both catches now surface the message, which is the part an operator needs,
and the handler that promises console detail logs. Whether the throttle should
be offered on Redpanda at all is a product call, left alone: it cannot work
there, and the codebase already branches on `api.isRedpanda` in this feature.
Reported on #2639 by a reviewer testing against a 3-broker cluster; pre-existing
rather than a Chakra-exit regression, so it is split out of that PR.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
✅ Clean — no registry drift, off-token colours, or ad-hoc classesApp:
Generated by lookout audit-changes. |
SpicyPete
requested review from
a team,
c-julin,
datamali,
eblairmckee and
weeco
and removed request for
a team
September 9, 2026 23:28
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.
"Start Reassignment" fails silently whenever the bandwidth throttle is above the slider minimum
Found by @eblairmckee while testing #2639 against a 3-broker cluster, and pre-existing — none of these lines is a Chakra-exit hunk, so it is split out of that PR rather than folded into an approved swap. One file, three
catchblocks.The symptom
Click Start Reassignment with any throttle above the slider's minimum: a toast flashes for a fraction of a second, then nothing. No error, no alert, nothing in the console, and the wizard stays on step 3. Re-clicking behaves the same. The only way to submit is to drag the slider to its minimum.
Why it fails, and why it is silent
setTrafficLimitpatchesleader.replication.throttled.rate/follower.replication.throttled.rateper broker. Redpanda does not support per-broker property patches — it uses cluster config — so every broker comes back with an error, inside an HTTP 200:The code detects it correctly and then drops it, three layers deep:
setTrafficLimit—catch (_err) { closeToast(toastRef); return false; }. ThatcloseToastis the flash: the loading toast opens, then closes.startReassignment—if (!success) { return false; }, no message. Its own catch has the same shape.onNextPage—if (success) { … }with noelse.The sibling handler's copy even promises "See console for more information" while nothing was ever logged.
What this changes
Both catches surface the error and log it. The
INVALID_CONFIGtext is genuinely useful to an operator, so it is passed through rather than replaced with a generic string, andonNextPage's handler now logs the detail its own copy promises. No happy-path behaviour changes: everyreturn falsepath already had a toast except these two.Deliberately not here
Whether the throttle should be offered on Redpanda at all is a product call. It cannot work there, for every broker, every time — and this feature already branches on
api.isRedpanda(the non-Redpanda warning under Active Reassignments), so disabling the slider with a short explanation is a small change. It would stop people reaching an unreachable path, but it is a product decision rather than a bug fix, so it is left alone here.Gates
type:checkclean ·test:unit882 ·test:integration1316 ·lint:checkon the changed file reports the same three pre-existing errors as master's copy of it (verified against a probe oforigin/master), no net-new ·bun run lintleaves the tree clean.Not covered by a test: the failure needs a live Redpanda cluster to reproduce, and the change is error-path plumbing rather than logic. Verified by reading the response shape from @eblairmckee's repro above.
🤖 Generated with Claude Code