fix(sdk): add configurable timeout/retry and document SIGNET_SESSIONS_VALID_AFTER - #104
Merged
blockchain-maxis merged 2 commits intoAug 9, 2026
Conversation
SDK fetch calls now support: - timeoutMs (default 10s) via AbortController to prevent hangs - maxRetries (default 2) on 5xx and network errors with backoff Closes blockchain-maxis#61 docs: document SIGNET_SESSIONS_VALID_AFTER in SECURITY.md Adds operator guidance for bulk session revocation with a copy-pasteable command. Closes blockchain-maxis#68
✅ Deploy Preview for stellar-signet ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
@samuelelijah585 is attempting to deploy a commit to the blockchainmaxis-8449's projects Team on Vercel. A member of the Team first needs to authorize it. |
|
@samuelelijah585 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
Two things changed on main under this branch: - Issue blockchain-maxis#68 is already closed — SECURITY.md documents SIGNET_SESSIONS_VALID_AFTER with the copy-pasteable revocation command, so that half of this PR is now a no-op and the file is taken from main unchanged. - `client.ts` grew typed errors (NetworkError / NotFoundError / ApiError from ./errors.ts, plus queryNullable) and three more procedures. This branch's version predates all of it and collapsed every failure into `null`. Reimplemented the timeout/retry on top of that contract rather than over it: each attempt is bounded by an AbortController (`timeoutMs`, default 10s) and 5xx / network failures are retried with exponential backoff (`maxRetries`, default 2). A timeout surfaces as NetworkError; 404 and other 4xx are answers, so they are never retried. Ported this branch's retry tests to match, and added coverage for the no-retry-on-4xx and abort paths. Closes blockchain-maxis#61.
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.
Overview
This PR addresses two issues affecting the Signet SDK and operator documentation:
fetchcalls no longer hang indefinitely on a stalled network. TheSignetClientnow supports configurable timeout viaAbortControllerand bounded retries on 5xx / network errors with exponential backoff.SIGNET_SESSIONS_VALID_AFTER(the env var that invalidates issued sessions) is now documented inSECURITY.mdwith a copy-pasteable command.Related Issues
Closes #61
Closes #68
Changes
SDK Timeout and Retry (
packages/sdk/src/client.ts)SignetClientOptions.timeoutMs(default10_000) — request aborts after this many ms viaAbortController.SignetClientOptions.maxRetries(default2) — retries on5xxresponses and network/timeout errors.200ms → 400ms → 800ms …, capped at5s).isRetryableError()helper — retries onAbortError(timeout) andTypeError(network failure).client.test.ts— retry-on-5xx success, retry exhaustion, timeout handling, and option verification.Session Revocation Docs (
SECURITY.md)SIGNET_SESSIONS_VALID_AFTERunder "Hardening notes for operators":iatclaim against the timestamp).SIGNET_AUTH_SECRET.Verification Results
AbortControlleraborts aftertimeoutMsmaxRetriesdatecommand inSECURITY.md