From 3d5c6102e39e881edf056dc69cdc0dcb9b6d281b Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Sat, 10 Jan 2026 02:46:30 +0000 Subject: fix: document relay behavior in negentropy retry zero-event scenario Add comprehensive comment explaining why some relays (azzamo.net, snort.social) return zero events during negentropy retry even when they have the events. Documents infinite loop prevention logic and suggests future REQ+EOSE fallback strategy. --- src/sync/mod.rs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/sync') diff --git a/src/sync/mod.rs b/src/sync/mod.rs index d8c2d4f..e2d55bd 100644 --- a/src/sync/mod.rs +++ b/src/sync/mod.rs @@ -851,6 +851,14 @@ impl SyncManager { // Check if we made any progress (received ANY events we requested) // If received_count is 0, relay returned nothing useful - abort retry + // + // NOTE: Some relays (e.g., azzamo.net, snort.social) have been observed + // returning zero events during negentropy retry even though manual queries + // (REQ by ID) show they DO have these events. This appears to be relay- + // specific behavior where the relay refuses to serve events via negentropy + // retry for unknown reasons (rate limiting, negentropy implementation bugs, + // or other internal logic). We abort here to prevent infinite loops, but + // future enhancement could fall back to REQ+EOSE when retry returns zero. if retry_count > 0 && received_count == 0 { tracing::error!( relay = %relay_url, -- cgit v1.2.3