Skip to content

chore: replace always-on faraday-retry with opt-in RetryConfig#73

Open
mogita wants to merge 1 commit into
masterfrom
feat/cha-2959-retry
Open

chore: replace always-on faraday-retry with opt-in RetryConfig#73
mogita wants to merge 1 commit into
masterfrom
feat/cha-2959-retry

Conversation

@mogita

@mogita mogita commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

Ticket

https://linear.app/stream/issue/CHA-2959/rate-limits-and-retry

Summary

Adds an opt-in auto-retry policy. RetryConfig is disabled by default (maxAttempts=3, maxBackoff=30s). When enabled, retries ONLY GET/HEAD requests that fail with HTTP 429 or a transport error, honoring Retry-After (clamped to maxBackoff) otherwise exponential backoff with full jitter. Never retries writes or 5xx; always honors the backend unrecoverable flag; surfaces the last attempt's error. Config surface: retry_config: GetStreamRuby::RetryConfig.new(...)

Notes

  • Behavior change: removes the always-on faraday-retry middleware (and its gemspec dependency); retries are now opt-in only.
  • Retry attempts are observable via the existing http.request.failed log event with a retry.attempt field (transport retries carry error.type; 429 retries omit it, since that field is the transport-only enum).
  • Titled chore: intentionally so the merge does not auto-publish. Publish later via the manual Release workflow (workflow_dispatch, minor); the release notes should flag the behavior change.

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.

1 participant