From 8148c27a1350189046bc8e215f29f918dd8747f5 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Wed, 10 Dec 2025 14:36:06 +0000 Subject: sync: fix connection registration issue --- src/sync/mod.rs | 18 ++++++++++++++++-- src/sync/relay_connection.rs | 1 + src/sync/self_subscriber.rs | 17 ++++++++++++++++- 3 files changed, 33 insertions(+), 3 deletions(-) (limited to 'src/sync') diff --git a/src/sync/mod.rs b/src/sync/mod.rs index 7a0a705..b38c4a9 100644 --- a/src/sync/mod.rs +++ b/src/sync/mod.rs @@ -1300,6 +1300,16 @@ impl SyncManager { state.disconnected_at = None; } + // Store connection in HashMap BEFORE sending notification + // This ensures it's available when handle_connect_or_reconnect is called + self.connections.insert(relay_url.clone(), connection); + + tracing::info!( + relay = %relay_url, + is_bootstrap = is_bootstrap, + "Spawned relay connection" + ); + // Notify SyncManager of successful connection let _ = connect_tx .send(ConnectNotification { @@ -1307,12 +1317,16 @@ impl SyncManager { }) .await; + // Clone the connection for the event loop spawn + // The stored connection is used for subscription management + let connection_for_loop = self.connections.get(&relay_url).unwrap().clone(); + // Create event channel let (event_tx, mut event_rx) = mpsc::channel::(1000); - // Spawn event loop + // Spawn event loop with cloned connection tokio::spawn(async move { - connection.run_event_loop(event_tx).await; + connection_for_loop.run_event_loop(event_tx).await; }); // Spawn event processor diff --git a/src/sync/relay_connection.rs b/src/sync/relay_connection.rs index b0765e8..09c9887 100644 --- a/src/sync/relay_connection.rs +++ b/src/sync/relay_connection.rs @@ -32,6 +32,7 @@ pub enum RelayEvent { /// - Layer 1 subscription (announcements) /// - Additional filter subscriptions (Layers 2 & 3) /// - Event notification loop +#[derive(Clone)] pub struct RelayConnection { /// The relay URL this connection is for url: String, diff --git a/src/sync/self_subscriber.rs b/src/sync/self_subscriber.rs index e9e61ff..27e7e64 100644 --- a/src/sync/self_subscriber.rs +++ b/src/sync/self_subscriber.rs @@ -443,6 +443,15 @@ impl SelfSubscriber { "Processing batch of repo updates" ); + // Log what repos and relays we discovered + for (repo_id, needs) in &updates { + tracing::info!( + repo_id = %repo_id, + relay_urls = ?needs.relays, + "Discovered repo with relay URLs" + ); + } + // Update RepoSyncIndex let mut index = self.repo_sync_index.write().await; @@ -482,6 +491,10 @@ impl SelfSubscriber { None, ); + // Log before moving values + let repo_count = needs.repos.len(); + let event_count = needs.root_events.len(); + let action = AddFilters { relay_url: relay_url.clone(), repos: needs.repos, @@ -496,8 +509,10 @@ impl SelfSubscriber { "Failed to send AddFilters action" ); } else { - tracing::debug!( + tracing::info!( relay = %relay_url, + repo_count = repo_count, + event_count = event_count, "Sent AddFilters action to SyncManager" ); } -- cgit v1.2.3