upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/src/purgatory/sync/mod.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2026-01-07 11:21:26 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2026-01-07 11:21:26 +0000
commit2665811f54f62f147b7d773c76bd26d032b8f9cb (patch)
treea716d2115002cfbc360d74ce695817bc46f8a074 /src/purgatory/sync/mod.rs
parent852eddcc33b59ed027e06d30456f6b9e3b9a31cb (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.rs11
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
9mod queue;
10
11pub use queue::SyncQueueEntry;