diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2026-01-07 11:21:26 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2026-01-07 11:21:26 +0000 |
| commit | 2665811f54f62f147b7d773c76bd26d032b8f9cb (patch) | |
| tree | a716d2115002cfbc360d74ce695817bc46f8a074 /src/purgatory/sync/mod.rs | |
| parent | 852eddcc33b59ed027e06d30456f6b9e3b9a31cb (diff) | |
Add SyncQueueEntry with exponential backoff for purgatory sync
Implement the sync queue entry struct that tracks sync state per identifier:
- next_attempt: when the next sync should be attempted
- attempt_count: for backoff calculation (resets on new events)
- in_progress: prevents concurrent syncs for same identifier
Backoff schedule: 20s → 40s → 80s → 120s (capped at 2 minutes)
This is the foundation for the identifier-based purgatory sync system
that will replace the current per-event syncing approach.
Diffstat (limited to 'src/purgatory/sync/mod.rs')
| -rw-r--r-- | src/purgatory/sync/mod.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/purgatory/sync/mod.rs b/src/purgatory/sync/mod.rs new file mode 100644 index 0000000..7b6d64a --- /dev/null +++ b/src/purgatory/sync/mod.rs | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | //! Purgatory sync module for background git data synchronization. | ||
| 2 | //! | ||
| 3 | //! This module implements identifier-based syncing with: | ||
| 4 | //! - Batched OID fetching across all purgatory events for an identifier | ||
| 5 | //! - Domain-based throttling (configurable requests/minute per domain) | ||
| 6 | //! - Exponential backoff per identifier (20s → 2m, then 2m intervals) | ||
| 7 | //! - Debouncing for burst event arrivals | ||
| 8 | |||
| 9 | mod queue; | ||
| 10 | |||
| 11 | pub use queue::SyncQueueEntry; | ||