Skip to content

feat: TTL pruning, retry jitter, priority queue, webhook HMAC enforcement - #788

Open
ofodumchristopher32-web wants to merge 1 commit into
Stellar-split:mainfrom
ofodumchristopher32-web:feat/ttl-jitter-priority-queue-webhook-sig
Open

feat: TTL pruning, retry jitter, priority queue, webhook HMAC enforcement#788
ofodumchristopher32-web wants to merge 1 commit into
Stellar-split:mainfrom
ofodumchristopher32-web:feat/ttl-jitter-priority-queue-webhook-sig

Conversation

@ofodumchristopher32-web

Copy link
Copy Markdown

…ment

- claimableBalanceFallback: add per-entry TTL (default 24h), pruneExpired()
  method that removes stale entries and returns count, auto-prune on every
  track() call to prevent unbounded memory growth. Closes Stellar-split#735

- retryEngine: add RetryEngineOptions.jitterFactor (0-1, default 0.2);
  each computed delay is multiplied by a random value in [1-jf, 1+jf]
  to spread retry storms. jitterFactor=0 disables jitter entirely and
  skips the Math.random call. Closes Stellar-split#733

- queue: enqueue() accepts an optional priority (higher = dequeued first);
  equal-priority items preserve FIFO insertion order via binary insertion.
  Add peek() to inspect the next-to-drain item without removing it. Closes Stellar-split#732

- webhookValidator: add validateWebhook(payload, rawBody, secret, signature)
  that verifies hmac-sha256= formatted signatures using Node.js
  crypto.timingSafeEqual; throws WebhookSignatureError on mismatch;
  passes when secret is null (opt-out mode). Closes Stellar-split#731
@drips-wave

drips-wave Bot commented Aug 29, 2026

Copy link
Copy Markdown

@ofodumchristopher32-web 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! 🚀

Learn more about application limits

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant