-
Notifications
You must be signed in to change notification settings - Fork 87
Build a resilient retry policy engine with exponential backoff and jitter #370
Copy link
Copy link
Closed
Labels
GrantFox OSSGrantFox Open Source Sponsorship program tagGrantFox Open Source Sponsorship program tagMaybe RewardedIssue may qualify for a reward upon successful completion per campaign rulesIssue may qualify for a reward upon successful completion per campaign rulesThird CampaignOfficial FWC26 campaign issue — eligible for campaign scoring and rewardsOfficial FWC26 campaign issue — eligible for campaign scoring and rewardsadvancedAdvanced difficulty tasks requiring significant domain knowledge and implementation effortAdvanced difficulty tasks requiring significant domain knowledge and implementation effortbackendBackend services, application logic, persistence integration, and server-side functionalityBackend services, application logic, persistence integration, and server-side functionalityconsistencyPattern and convention standardization across the codebase for uniformityPattern and convention standardization across the codebase for uniformityperformancePerformance optimization or latency/throughput improvement workPerformance optimization or latency/throughput improvement work
Description
Activity
Metadata
Metadata
Assignees
Labels
GrantFox OSSGrantFox Open Source Sponsorship program tagGrantFox Open Source Sponsorship program tagMaybe RewardedIssue may qualify for a reward upon successful completion per campaign rulesIssue may qualify for a reward upon successful completion per campaign rulesThird CampaignOfficial FWC26 campaign issue — eligible for campaign scoring and rewardsOfficial FWC26 campaign issue — eligible for campaign scoring and rewardsadvancedAdvanced difficulty tasks requiring significant domain knowledge and implementation effortAdvanced difficulty tasks requiring significant domain knowledge and implementation effortbackendBackend services, application logic, persistence integration, and server-side functionalityBackend services, application logic, persistence integration, and server-side functionalityconsistencyPattern and convention standardization across the codebase for uniformityPattern and convention standardization across the codebase for uniformityperformancePerformance optimization or latency/throughput improvement workPerformance optimization or latency/throughput improvement work
Difficulty: Advanced
Type: Feature
Recommended labels (if available in this repo): backend, performance, consistency, advanced
Background
GuildPass Core will eventually communicate with external infrastructure such as Stellar RPC endpoints, internal services and event processors. Temporary failures should not require every caller to implement its own retry loops.
This issue introduces a reusable retry primitive that can later be adopted by those integrations without depending on them today.
Problem
Naive retries can overload failing services, retry permanent errors unnecessarily or produce synchronized retry storms when many workers fail simultaneously.
Core needs explicit, deterministic retry semantics with configurable backoff and bounded execution.
Expected Outcome
Implement a generic asynchronous retry engine supporting exponential backoff, jitter, cancellation and caller-defined retry classification.
Suggested Implementation
The API should allow a caller to provide:
AbortSignal;The implementation should:
Acceptance Criteria
pnpm typecheckpasses.pnpm buildpasses.pnpm testpasses.Likely Affected Files/Directories
Independence Requirement
This issue must remain a generic resilience primitive. It must not depend on Stellar RPC, HTTP clients, Redis, Prisma or another contributor issue.