Skip to content

Fix/sdk 7229 buildstop resilience - #143

Merged
rahulpsq merged 2 commits into
sdk_v9_pre_prod_14augfrom
fix/sdk-7229-buildstop-resilience
Aug 14, 2026
Merged

Fix/sdk 7229 buildstop resilience#143
rahulpsq merged 2 commits into
sdk_v9_pre_prod_14augfrom
fix/sdk-7229-buildstop-resilience

Conversation

@rahulpsq

Copy link
Copy Markdown
Contributor

What is this about?

Related Jira task/s

Release (mandatory for every PR — required for the ready-for-review label)

Version bump: (required — tick exactly one)

  • minor (backwards-compatible feature)
  • patch (bug fix or other small change)

Release notes type: (optional)

  • New Feature
  • Bug Fix
  • Other Improvement

Release notes (customer-facing): (optional but encouraged)

Release notes (internal): (required — engineer-facing; what actually changed / why)

Checklist

  • Ready to review
  • Has it been tested locally?

PR Validations

Run Tests: Comment RUN_TESTS to trigger sanity tests.

Bhargavi-BS and others added 2 commits August 13, 2026 09:24
…ps (SDK-7229)

The build-stop PUT is the only signal that closes a TRA build. SDK-7061 added a
3-attempt retry, but the whole window was ~1.5s (500ms + 1000ms) — shorter than a
typical corporate DNS/proxy blip — and the request carried no timeout at all, so a
connection that never settled could stall onComplete indefinitely.

On top of that, every failure was logged as a bare `TypeError: fetch failed`.
Node's fetch keeps the actionable detail (ENOTFOUND, ECONNRESET, proxy refusal) on
`error.cause`, which plain interpolation drops — so a failed build stop was
indistinguishable from any other network fault in a customer log.

- Widen the retry to STOP_BUILD_MAX_ATTEMPTS (4) with exponential backoff (1s/2s/4s),
  capped by a STOP_BUILD_TOTAL_BUDGET_MS (30s) wall-clock deadline. The deadline
  bounds the added shutdown cost regardless of attempt count.
- Bound each attempt with an AbortController (STOP_BUILD_ATTEMPT_TIMEOUT_MS, 10s,
  clamped to the remaining budget), and report an aborted attempt as a timeout
  rather than a generic AbortError.
- Add describeErrorWithCause() and use it on every build-stop failure log so the
  underlying transport reason is recorded.

Observed against the customer's exact failure mode (fetch rejecting with an
ENOTFOUND cause): 1 attempt before SDK-7061, 3 attempts / 1.5s on 9.33.1, and
4 attempts / 7.0s here — with the DNS cause now present in the log line.
@rahulpsq
rahulpsq requested a review from a team as a code owner August 14, 2026 12:30
@rahulpsq
rahulpsq requested review from Bhargavi-BS and xxshubhamxx and removed request for a team August 14, 2026 12:30
@rahulpsq
rahulpsq merged commit 3eeb3e5 into sdk_v9_pre_prod_14aug Aug 14, 2026
21 of 23 checks passed
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.

2 participants