diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2025-12-04 17:58:31 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2025-12-04 17:58:31 +0000 |
| commit | f639ecfac6687c9e8de4e3f305e168b2e4e1bb87 (patch) | |
| tree | cfcbf16a937a59048930ccaf8557f78ed5576bde /src/sync/mod.rs | |
| parent | bf558b0dc17e14f96eea624ea5591315a2909154 (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.rs | 9 |
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 | ||
| 13 | mod connection; | 20 | mod connection; |
| 14 | mod filter; | 21 | mod filter; |
| 22 | pub mod health; | ||
| 15 | mod manager; | 23 | mod manager; |
| 16 | 24 | ||
| 17 | pub use filter::FilterService; | 25 | pub use filter::FilterService; |
| 26 | pub use health::{HealthState, RelayHealth, RelayHealthTracker}; | ||
| 18 | pub use manager::SyncManager; | 27 | pub use manager::SyncManager; |
| 19 | 28 | ||
| 20 | use std::net::SocketAddr; | 29 | use std::net::SocketAddr; |