From f5b83c28c63fa1e9a5ff5e82782967e6bb9cfa96 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 27 May 2026 17:29:28 +0530 Subject: Fix discovery: use fetch_events_from with index_relays only The nostr-sdk pool fetch_events returns empty when most relays are dead. Target only the known-working index relays for discovery queries. --- src/main.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index c7fa23a..d28fbe2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -142,6 +142,7 @@ async fn run_daemon(config: config::ResolvedConfig, db: db::MirrorDb) -> Result< let healthy = Arc::new(healthy); let relay_urls = config.relay_urls(); + let index_relays = config.discovery.index_relays.clone(); let nostr_client = build_nostr_client(&relay_urls); nostr_client.connect().await; @@ -149,6 +150,7 @@ async fn run_daemon(config: config::ResolvedConfig, db: db::MirrorDb) -> Result< let nostr_mirror = nostr_mirror::NostrMirror::new(nostr_client.clone()); let nip46_client_ref: Option> = nip46_client.clone(); + let index_relays_ref = Arc::new(index_relays); let mut interval = tokio::time::interval(std::time::Duration::from_secs( config.discovery.poll_interval_secs, @@ -168,6 +170,7 @@ async fn run_daemon(config: config::ResolvedConfig, db: db::MirrorDb) -> Result< &config, &db, &nostr_client, + &index_relays_ref, &mirror, &nostr_mirror, &healthy, @@ -197,6 +200,7 @@ async fn mirror_cycle( config: &Arc, db: &Arc, nostr_client: &nostr_sdk::Client, + index_relays: &Arc>, mirror: &git_mirror::GitMirror, nostr_mirror: &nostr_mirror::NostrMirror, servers: &Arc>, @@ -205,7 +209,7 @@ async fn mirror_cycle( tracing::info!("starting mirror cycle"); let relay_urls = config.relay_urls(); - let repos = discovery::discover_repos_from_relays(nostr_client, &config.npubs, &relay_urls) + let repos = discovery::discover_repos_from_relays(nostr_client, &config.npubs, index_relays, &relay_urls) .await?; tracing::info!(count = repos.len(), "discovered repos"); @@ -337,6 +341,7 @@ async fn run_mirror_once(config: config::ResolvedConfig, db: db::MirrorDb) -> Re .collect(); let relay_urls = config.relay_urls(); + let index_relays = Arc::new(config.discovery.index_relays.clone()); let nostr_client = build_nostr_client(&relay_urls); nostr_client.connect().await; @@ -348,6 +353,7 @@ async fn run_mirror_once(config: config::ResolvedConfig, db: db::MirrorDb) -> Re &config, &db, &nostr_client, + &index_relays, &mirror, &nostr_mirror, &healthy, -- cgit v1.2.3