lightweight com.atproto.sync.listReposByCollection
45
fork

Configure Feed

Select the types of activity you want to include in your feed.

make resolution cancellable

phil 93a3c5e1 08ad6919

+7 -2
+1 -1
src/main.rs
··· 160 160 std::sync::Mutex::new(resync::dispatcher::DispatcherSnapshot::default()), 161 161 ); 162 162 163 - let discovery_queue = std::sync::Arc::new(DiscoveryQueue::new(4096, 36)); 163 + let discovery_queue = std::sync::Arc::new(DiscoveryQueue::new(8192, 32)); 164 164 165 165 let mut tasks: JoinSet<Result<()>> = JoinSet::new(); 166 166
+6 -1
src/sync/resync/mod.rs
··· 60 60 /// The repo state has been updated; the caller may schedule a slow retry. 61 61 #[error("repo not found on PDS")] 62 62 RepoNotFound, 63 + #[error("externally cancelled")] 64 + Cancelled, 63 65 } 64 66 65 67 /// A snapshot of a repository's state as observed during a resync. ··· 147 149 // spawn_blocking closures (which require 'static captures). 148 150 let did: Did<'static> = did.into_static(); 149 151 150 - let resolved = resolver.resolve(&did).await?; 152 + let Some(resolved) = token.run(resolver.resolve(&did)).await else { 153 + return Err(ResyncError::Cancelled); 154 + }; 155 + let resolved = resolved?; 151 156 let base = &*resolved.pds; 152 157 153 158 let repo_snapshot = match fetch_collections(