Repository navigation
Do not resend a REST call that used up its whole deadline - #1502
Merged
Merged
Conversation
helpcodeai
enabled auto-merge (squash)
November 4, 2026 08:12
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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
A REST call that ran into its whole deadline without an answer was sent again up to three times when it was idempotent (GET, PUT). With the default 30 s timeout that is about 124 s before the model gets an error, longer than most MCP clients wait. Cloud logs of 3-4 Nov: 13 calls in 3 workspaces ended with "Could not reach the API after 4 attempts ... (ECONNABORTED)" after ~124 s (PrestaShop 11, Telegram 1, a hand-built connector 1).
Tools that raised their own
timeoutMsalready got no retry after a timeout. This applies the same rule to every call that used up its deadline.Changes
requestWithRetry: no retry when the error is the request deadline (ECONNABORTEDwith "timeout of ms exceeded", raised by axios and by outbound-http).ECONNABORTEDerrors (a socket aborted early),ETIMEDOUT,ECONNRESET, 502/503/504 and 429 are retried as before.Cloud and self-hosted behave the same.
Type
Testing
New case: a GET and a PUT that hit "timeout of 30000ms exceeded" are sent once. The existing case "still retries a GET/PUT that timed out" (other ECONNABORTED) still passes.
In
packages/backend:npx jest src/connectors/engines/rest.engine --maxWorkers=4→ 204 passednpx eslinton the changed files → exit 0npx tsc --noEmit -p tsconfig.json→ exit 0Checklist
npm test)Related Issues
Found in the 2026-11-04 Cloud log review.