diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2026-01-10 01:24:52 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2026-01-10 01:24:52 +0000 |
| commit | c9b3b3bd8a04de139bcb0d0b83bf819c367ee8c8 (patch) | |
| tree | 80cc2c1ec92d71637408a7588d8cb908f03fc4b6 /src/config.rs | |
| parent | 9369a2885f5a3f9e38c0a3f9fa3af6260513c8e4 (diff) | |
Implement relay naughty list feature
Add naughty list tracking for relays with persistent infrastructure issues
(DNS failures, TLS certificate errors, protocol violations) to reduce log
noise and provide better visibility via metrics.
Key features:
- Classify errors into naughty (persistent) vs transient (temporary)
- Track naughty relays with category, reason, and occurrence count
- Log WARN on first naughty occurrence, DEBUG on repeats
- Automatic expiration after 12 hours (configurable)
- Prometheus metrics for monitoring naughty relays by category
- Periodic cleanup task integrated with health checker
Components added:
- src/sync/naughty_list.rs: Core naughty list tracker with error classification
- NaughtyListTracker integration in RelayHealthTracker
- Connection error handling updates in sync manager
- Naughty list metrics (total by category, detailed info per relay)
- Config option for naughty_list_expiration_hours (default: 12)
Closes DNS lookup failures and TLS certificate errors tracking issues.
Diffstat (limited to 'src/config.rs')
| -rw-r--r-- | src/config.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/config.rs b/src/config.rs index 44001d8..74327c9 100644 --- a/src/config.rs +++ b/src/config.rs | |||
| @@ -156,6 +156,12 @@ pub struct Config { | |||
| 156 | default_value_t = 604800 | 156 | default_value_t = 604800 |
| 157 | )] | 157 | )] |
| 158 | pub rejected_cold_index_expiry_secs: u64, | 158 | pub rejected_cold_index_expiry_secs: u64, |
| 159 | |||
| 160 | /// Hours before removing relay from naughty list (default: 12) | ||
| 161 | /// Relays with persistent infrastructure issues (DNS, TLS, protocol errors) are | ||
| 162 | /// tracked separately and retried after this expiration period. | ||
| 163 | #[arg(long, env = "NGIT_NAUGHTY_LIST_EXPIRATION_HOURS", default_value_t = 12)] | ||
| 164 | pub naughty_list_expiration_hours: u64, | ||
| 159 | } | 165 | } |
| 160 | 166 | ||
| 161 | impl Config { | 167 | impl Config { |
| @@ -281,6 +287,7 @@ impl Config { | |||
| 281 | sync_disable_negentropy: false, | 287 | sync_disable_negentropy: false, |
| 282 | rejected_hot_cache_duration_secs: 120, | 288 | rejected_hot_cache_duration_secs: 120, |
| 283 | rejected_cold_index_expiry_secs: 604800, | 289 | rejected_cold_index_expiry_secs: 604800, |
| 290 | naughty_list_expiration_hours: 12, | ||
| 284 | } | 291 | } |
| 285 | } | 292 | } |
| 286 | } | 293 | } |