diff --git a/aquatic_udp/src/lib/config.rs b/aquatic_udp/src/lib/config.rs index dbda176..58e8446 100644 --- a/aquatic_udp/src/lib/config.rs +++ b/aquatic_udp/src/lib/config.rs @@ -91,12 +91,14 @@ pub struct StatisticsConfig { #[derive(Clone, Debug, Serialize, Deserialize)] #[serde(default)] pub struct CleaningConfig { - /// Update access list and clean torrents this often (seconds) - pub interval: u64, - /// Remove peers that haven't announced for this long (seconds) - pub max_peer_age: u64, + /// Clean connections this often (seconds) + pub connection_cleaning_interval: u64, + /// Clean torrents this often (seconds) + pub torrent_cleaning_interval: u64, /// Remove connections that are older than this (seconds) pub max_connection_age: u64, + /// Remove peers that haven't announced for this long (seconds) + pub max_peer_age: u64, } impl Default for Config { @@ -160,9 +162,10 @@ impl Default for StatisticsConfig { impl Default for CleaningConfig { fn default() -> Self { Self { - interval: 30, - max_peer_age: 60 * 20, + connection_cleaning_interval: 60, + torrent_cleaning_interval: 60 * 2, max_connection_age: 60 * 5, + max_peer_age: 60 * 20, } } } diff --git a/aquatic_udp/src/lib/glommio/handlers.rs b/aquatic_udp/src/lib/glommio/handlers.rs index aefe701..fbfbcb2 100644 --- a/aquatic_udp/src/lib/glommio/handlers.rs +++ b/aquatic_udp/src/lib/glommio/handlers.rs @@ -34,7 +34,7 @@ pub async fn run_request_worker( enclose!((config, torrents, state) move || async move { torrents.borrow_mut().clean(&config, &state.access_list); - Some(Duration::from_secs(config.cleaning.interval)) + Some(Duration::from_secs(config.cleaning.torrent_cleaning_interval)) })() })); diff --git a/aquatic_udp/src/lib/glommio/network.rs b/aquatic_udp/src/lib/glommio/network.rs index 8daf0d0..df5d186 100644 --- a/aquatic_udp/src/lib/glommio/network.rs +++ b/aquatic_udp/src/lib/glommio/network.rs @@ -127,11 +127,11 @@ pub async fn run_socket_worker( let pending_scrape_responses = Rc::new(RefCell::new(PendingScrapeResponses::default())); // Periodically clean pending_scrape_responses - TimerActionRepeat::repeat(enclose!((config, pending_scrape_responses) move || { - enclose!((config, pending_scrape_responses) move || async move { + TimerActionRepeat::repeat(enclose!((pending_scrape_responses) move || { + enclose!((pending_scrape_responses) move || async move { pending_scrape_responses.borrow_mut().clean(); - Some(Duration::from_secs(config.cleaning.interval)) + Some(Duration::from_secs(120)) })() })); @@ -201,7 +201,7 @@ async fn read_requests( enclose!((config, connections) move || async move { connections.borrow_mut().clean(); - Some(Duration::from_secs(config.cleaning.interval)) + Some(Duration::from_secs(config.cleaning.connection_cleaning_interval)) })() })); diff --git a/aquatic_udp/src/lib/mio/mod.rs b/aquatic_udp/src/lib/mio/mod.rs index 75cd530..f21f9e7 100644 --- a/aquatic_udp/src/lib/mio/mod.rs +++ b/aquatic_udp/src/lib/mio/mod.rs @@ -141,7 +141,9 @@ pub fn run_inner(config: Config, state: State) -> ::anyhow::Result<()> { .unwrap(); loop { - ::std::thread::sleep(Duration::from_secs(config.cleaning.interval)); + ::std::thread::sleep(Duration::from_secs( + config.cleaning.torrent_cleaning_interval, + )); state.torrents.lock().clean(&config, &state.access_list); } diff --git a/aquatic_udp/src/lib/mio/network.rs b/aquatic_udp/src/lib/mio/network.rs index 0834f26..f7143e6 100644 --- a/aquatic_udp/src/lib/mio/network.rs +++ b/aquatic_udp/src/lib/mio/network.rs @@ -88,7 +88,9 @@ pub fn run_socket_worker( if iter_counter % 32 == 0 { let now = Instant::now(); - if last_cleaning + Duration::from_secs(config.cleaning.interval) > now { + if last_cleaning + Duration::from_secs(config.cleaning.connection_cleaning_interval) + > now + { connections.clean(); last_cleaning = now;