diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2025-12-19 13:56:25 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2025-12-19 13:56:25 +0000 |
| commit | 565715adf14cafd0f0155d553f583581334a8dac (patch) | |
| tree | 8f692254da5fd91a8944acf4d815602672dd0ef4 /src/sync/mod.rs | |
| parent | f41bd47bf95dabfa3d0e6cb110e751e7cd43f138 (diff) | |
sync: fix autoclose on EOSE for historic filters
Diffstat (limited to 'src/sync/mod.rs')
| -rw-r--r-- | src/sync/mod.rs | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/sync/mod.rs b/src/sync/mod.rs index 3f8e503..88608b1 100644 --- a/src/sync/mod.rs +++ b/src/sync/mod.rs | |||
| @@ -1614,15 +1614,7 @@ impl SyncManager { | |||
| 1614 | let since = Timestamp::from(now.as_secs().saturating_sub(QUICK_RECONNECT_WINDOW_SECS)); | 1614 | let since = Timestamp::from(now.as_secs().saturating_sub(QUICK_RECONNECT_WINDOW_SECS)); |
| 1615 | 1615 | ||
| 1616 | // Re-subscribe to Layer 1 with since filter | 1616 | // Re-subscribe to Layer 1 with since filter |
| 1617 | let layer1_filter = filters::build_announcement_filter(Some(since)); | 1617 | self.sync_generic_filters(relay_url, Some(since)).await; |
| 1618 | if let Err(e) = connection.subscribe_filter(layer1_filter).await { | ||
| 1619 | tracing::error!( | ||
| 1620 | relay = %relay_url, | ||
| 1621 | error = %e, | ||
| 1622 | "Failed to re-subscribe to Layer 1 during consolidation" | ||
| 1623 | ); | ||
| 1624 | } | ||
| 1625 | |||
| 1626 | // Rebuild Layer 2 and Layer 3 with since filter | 1618 | // Rebuild Layer 2 and Layer 3 with since filter |
| 1627 | self.rebuild_layer2_and_layer3(relay_url, Some(since)).await; | 1619 | self.rebuild_layer2_and_layer3(relay_url, Some(since)).await; |
| 1628 | 1620 | ||
| @@ -1817,7 +1809,11 @@ impl SyncManager { | |||
| 1817 | 1809 | ||
| 1818 | for filter in filters.iter() { | 1810 | for filter in filters.iter() { |
| 1819 | // Filters should already NOT have a limit set (live subscription = limit 1 instead of 0 as we dont know whether some relays would treat this as no limit) | 1811 | // Filters should already NOT have a limit set (live subscription = limit 1 instead of 0 as we dont know whether some relays would treat this as no limit) |
| 1820 | match connection.subscribe_filter(filter.clone().limit(1)).await { | 1812 | // Live subscriptions do NOT auto-close - we want them to stay open for new events |
| 1813 | match connection | ||
| 1814 | .subscribe_filter(filter.clone().limit(1), false) | ||
| 1815 | .await | ||
| 1816 | { | ||
| 1821 | Ok(sub_id) => { | 1817 | Ok(sub_id) => { |
| 1822 | sub_ids.push(sub_id); | 1818 | sub_ids.push(sub_id); |
| 1823 | } | 1819 | } |
| @@ -2045,7 +2041,7 @@ impl SyncManager { | |||
| 2045 | let mut subscription_ids = HashSet::new(); | 2041 | let mut subscription_ids = HashSet::new(); |
| 2046 | for (idx, filter) in ids_filters.iter().enumerate() { | 2042 | for (idx, filter) in ids_filters.iter().enumerate() { |
| 2047 | if let Some(conn) = self.connections.get(relay_url) { | 2043 | if let Some(conn) = self.connections.get(relay_url) { |
| 2048 | match conn.subscribe_filter(filter.clone()).await { | 2044 | match conn.subscribe_filter(filter.clone(), true).await { |
| 2049 | Ok(sub_id) => { | 2045 | Ok(sub_id) => { |
| 2050 | subscription_ids.insert(sub_id); | 2046 | subscription_ids.insert(sub_id); |
| 2051 | } | 2047 | } |
| @@ -2102,7 +2098,7 @@ impl SyncManager { | |||
| 2102 | ); | 2098 | ); |
| 2103 | 2099 | ||
| 2104 | if let Some(conn) = self.connections.get(relay_url) { | 2100 | if let Some(conn) = self.connections.get(relay_url) { |
| 2105 | match conn.subscribe_filter(filter.clone()).await { | 2101 | match conn.subscribe_filter(filter.clone(), true).await { |
| 2106 | Ok(sub_id) => { | 2102 | Ok(sub_id) => { |
| 2107 | subscription_ids.insert(sub_id); | 2103 | subscription_ids.insert(sub_id); |
| 2108 | } | 2104 | } |