Skip to content

[Backend] No HTTP timeout/retry-backoff on Soroban RPC calls - a hung RPC stalls the indexer poll loop and request handlers #805

Description

@grantfox-oss

Telegram (ask questions / claim the issue here first): https://t.me/+DOylgFv1jyJlNzM0

Why this matters

sorobanService.ts builds rpc.Server and awaits server.simulateTransaction/getAccount/sendTransaction with no client-side request timeout - TransactionBuilder.setTimeout(30) only sets the tx validity window, not an HTTP deadline. soroban-indexer.service.ts:87 and the controller stale-fallback path await these with no AbortController/timeout, so a non-responsive endpoint blocks the poll cycle and the request thread. No retry/backoff on transient RPC failures.

Acceptance criteria

  • Wrap Soroban RPC/fetch calls with an AbortController + configurable timeout
  • Add bounded retry with exponential backoff for transient getEvents/simulate failures
  • Surface a metric/log when RPC latency exceeds the timeout

Files to touch

  • backend/src/services/sorobanService.ts
  • backend/src/services/soroban-indexer.service.ts
  • backend/src/controllers/stream.controller.ts

Out of scope

  • Choosing a specific RPC provider

Metadata

Metadata

Assignees

Labels

Stellar WaveIssues in the Stellar wave programbackendBackend related tasksenhancementNew feature or request

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions