upleb.uk

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

summaryrefslogtreecommitdiff
path: root/src/sync/mod.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2025-12-04 17:58:31 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2025-12-04 17:58:31 +0000
commitf639ecfac6687c9e8de4e3f305e168b2e4e1bb87 (patch)
treecfcbf16a937a59048930ccaf8557f78ed5576bde /src/sync/mod.rs
parentbf558b0dc17e14f96eea624ea5591315a2909154 (diff)
feat(sync): Phase 3 - resilience and health tracking
- Add RelayHealthTracker with DashMap - Implement exponential backoff (5s -> 1h max) - Handle dead relays (24h failures -> daily retry) - Add startup jitter to prevent thundering herd - Add NGIT_SYNC_MAX_BACKOFF_SECS config
Diffstat (limited to 'src/sync/mod.rs')
-rw-r--r--src/sync/mod.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/sync/mod.rs b/src/sync/mod.rs
index 1155eaf..653aa27 100644
--- a/src/sync/mod.rs
+++ b/src/sync/mod.rs
@@ -9,12 +9,21 @@
9//! - **Layer 1**: Announcement discovery (kinds 30617 + 30618) 9//! - **Layer 1**: Announcement discovery (kinds 30617 + 30618)
10//! - **Layer 2**: Repository events (A/a tags for shared repos) 10//! - **Layer 2**: Repository events (A/a tags for shared repos)
11//! - **Layer 3**: Related events (E/e tags for discussions, reviews) 11//! - **Layer 3**: Related events (E/e tags for discussions, reviews)
12//!
13//! ## Resilience & Health Tracking (Phase 3)
14//!
15//! - **Health tracking**: Per-relay connection health states (Healthy, Degraded, Dead)
16//! - **Exponential backoff**: Smart retry delays on failures (5s -> 1h max)
17//! - **Dead relay handling**: Minimal retry for 24h+ failed relays
18//! - **Startup jitter**: Prevent thundering herd on launch (0-10s random delay)
12 19
13mod connection; 20mod connection;
14mod filter; 21mod filter;
22pub mod health;
15mod manager; 23mod manager;
16 24
17pub use filter::FilterService; 25pub use filter::FilterService;
26pub use health::{HealthState, RelayHealth, RelayHealthTracker};
18pub use manager::SyncManager; 27pub use manager::SyncManager;
19 28
20use std::net::SocketAddr; 29use std::net::SocketAddr;