fix(installer): bound services progress-bar kubectl with --request-timeout#351
Merged
Conversation
…request-timeout Bugbot (Medium): _download_services_progress claims to be bounded/non-blocking, but its two `kubectl get pods` calls omitted --request-timeout. The TB_PULL_TIMEOUT deadline is only checked BETWEEN iterations, so a wedged/ unreachable API makes kubectl block indefinitely — freezing step e's progress bar before the authoritative readiness gate in step f ever runs. Add --request-timeout (default 5s, overridable via TB_PROGRESS_KUBECTL_TIMEOUT) to both calls, mirroring assess.sh's bounded probe — a call that can't reach the API now returns quickly, the loop re-checks the deadline, and step e degrades to the honest "still downloading in the background" line instead of hanging. Manifest regenerated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Contributor
|
👋 Heads-up — Code review queue is at 48 / 30 Above the WIP limit. The team convention is to review existing PRs before opening new work. Open PRs currently in Code review (oldest first):
Pull from review before opening new work. (This is a nudge from the kanban WIP check, not a block.) |
Merged
2 tasks
LukasWodka
approved these changes
Jul 14, 2026
This was referenced Jul 16, 2026
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.
Summary
Bugbot Medium on #345:
_download_services_progress(scripts/lib/install-client-helm.sh) is documented as bounded/non-blocking, but its twokubectl get podscalls omitted--request-timeout. Since theTB_PULL_TIMEOUTdeadline is only checked between iterations, a wedged or unreachable API makeskubectlblock indefinitely — freezing step e's progress bar before the authoritative readiness gate in step f ever runs.Fix
Add
--request-timeout(default5s, overridable viaTB_PROGRESS_KUBECTL_TIMEOUT) to bothkubectl get podscalls, mirroringassess.sh's bounded probe. A call that can't reach the API now returns quickly, the loop re-checks the deadline, and step e degrades to the honest "still downloading in the background" line instead of hanging.Test plan
shellcheck --severity=error scripts/lib/install-client-helm.sh→ cleanbats scripts/tests/install-client-helm.bats→ 53 pass (the one pre-existing_extract_yaml_value '' escapefailure is unrelated and also fails ondevelop); the progress fn is skipped in bats viaTB_NO_SERVICE_PROGRESS, so behavior there is unchangedscripts/gen-manifest.sh --check→ up to dateChecklist
🤖 Generated with Claude Code
Note
Low Risk
Small, localized installer UX fix with no auth, data, or install-success path changes beyond avoiding a progress-bar hang.
Overview
Fixes a hang in install step e where
_download_services_progresscould block forever onkubectl get podswhen the API is wedged or unreachable. The loop only checksTB_PULL_TIMEOUTbetween iterations, so unbounded kubectl calls ignored that deadline.Both pod-list probes now use
--request-timeout(default 5s, override viaTB_PROGRESS_KUBECTL_TIMEOUT), matching the bounded kubectl pattern inassess.sh. Failed or slow API calls return quickly; the bar can time out and show the “still downloading in the background” path instead of freezing before step f’s readiness gate. The script manifest checksum is updated for the changed installer lib.Reviewed by Cursor Bugbot for commit b7fb5fa. Bugbot is set up for automated code reviews on this repo. Configure here.