-
Notifications
You must be signed in to change notification settings - Fork 21
Retry + exponential backoff for Soroban RPC #2
Copy link
Copy link
Open
Labels
Stellar WaveIssues in the Stellar wave programIssues in the Stellar wave programdripsFunded via Drips NetworkFunded via Drips Networkhelp wantedExtra attention is neededExtra attention is neededresilienceError handling / retriesError handling / retriesstellarTouches Stellar / Soroban codeTouches Stellar / Soroban code
Metadata
Metadata
Assignees
Labels
Stellar WaveIssues in the Stellar wave programIssues in the Stellar wave programdripsFunded via Drips NetworkFunded via Drips Networkhelp wantedExtra attention is neededExtra attention is neededresilienceError handling / retriesError handling / retriesstellarTouches Stellar / Soroban codeTouches Stellar / Soroban code
Type
Fields
Give feedbackNo fields configured for issues without a type.
Labels:
Stellar Wave,stellar,resilience,drips,help-wantedTier: M (2–4 days)
Type: resilience
Context
The Stellar Receive page calls Soroban RPC for
getEvents, Horizon for balance lookups, and the announcer contract for occasional reads. Today every call is single-attempt — a single 429 or transient 502 surfaces directly to the user as "scan failed". This is unacceptably brittle.We need a small retry primitive shared across all Stellar HTTP calls.
Scope
Add
src/lib/stellar/retry.tswith awithRetry(fn, opts)helper that:StellarRetryExhaustedErrorafter final attempt, carrying the last error.AbortSignalfrom the caller (e.g., user navigated away).Wire it into:
src/components/StellarSend.tsxSoroban announcer writesrc/components/StellarReceive.tsxscan loop and balance fetchAcceptance criteria
retry.tsimplementation with unit tests using mocked fetch.StellarRetryExhaustedErrorshows: "Network unstable — try again." with a retry button (not a generic stack trace).Why this matters
Soroban RPC rate limits on public endpoints are tight. Spectre's polling already pressures the same endpoints. Any user-perceived demo flakiness undercuts our entire credibility on Stellar.