From 905ebd838a9ff8cc777cf3b3b6306066e8c177fc Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Mon, 26 Jan 2026 17:20:11 +0000 Subject: fix: load existing events from database on startup with two-pass queries Previously, SelfSubscriber only saw events returned by the WebSocket subscription to the local relay, which has limits on the number of events returned. This caused repos with announcements in the database to never get Layer 2/3 filters created, resulting in missing state events. Now, on startup, we query the database directly with two separate queries: 1. Query announcements (30617) to populate repo_sync_index 2. Query root events (1617/1618/1621) to create Layer 3 filters Both queries use .since(last_connected) if available for incremental loading on reconnect. Filters are created inline and made mutable to support the .since() clause, rather than using a shared create_event_filter() method. Fixes the issue where state events were missing for repos like cashbird and creative-space that had announcements in the database but weren't returned by the WebSocket subscription. --- src/sync/mod.rs | 1 + 1 file changed, 1 insertion(+) (limited to 'src/sync/mod.rs') diff --git a/src/sync/mod.rs b/src/sync/mod.rs index bc8c428..226e681 100644 --- a/src/sync/mod.rs +++ b/src/sync/mod.rs @@ -1442,6 +1442,7 @@ impl SyncManager { self.service_domain.clone(), Arc::clone(&self.repo_sync_index), action_tx, + self.database.clone(), ); let subscriber_shutdown = shutdown_tx.subscribe(); tokio::spawn(async move { self_subscriber.run(Some(subscriber_shutdown)).await }); -- cgit v1.2.3 From dd9b00c644853a8db0ec463a7e1eddabd6634e41 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Tue, 27 Jan 2026 11:06:09 +0000 Subject: fix: improve logging to enable migration script to detect announcement parse failures --- src/sync/mod.rs | 1 + 1 file changed, 1 insertion(+) (limited to 'src/sync/mod.rs') diff --git a/src/sync/mod.rs b/src/sync/mod.rs index 226e681..a0dfa59 100644 --- a/src/sync/mod.rs +++ b/src/sync/mod.rs @@ -2812,6 +2812,7 @@ impl SyncManager { event_id = %event.id, kind = %event.kind.as_u16(), identifier = %identifier, + pubkey = %event.pubkey, "Added rejected announcement to two-tier index" ); } -- cgit v1.2.3