udp: network: update ValidUntil structs less often

This commit is contained in:
Joakim Frostegård 2021-11-19 01:18:58 +01:00
parent 9c919a6ecb
commit a530dc2860
2 changed files with 16 additions and 3 deletions

View file

@ -23,6 +23,9 @@ impl ValidUntil {
pub fn new(offset_seconds: u64) -> Self { pub fn new(offset_seconds: u64) -> Self {
Self(Instant::now() + Duration::from_secs(offset_seconds)) Self(Instant::now() + Duration::from_secs(offset_seconds))
} }
pub fn new_with_now(now: Instant, offset_seconds: u64) -> Self {
Self(now + Duration::from_secs(offset_seconds))
}
} }
/// Extract response peers /// Extract response peers

View file

@ -145,6 +145,9 @@ pub fn run_socket_worker(
let pending_scrape_cleaning_duration = let pending_scrape_cleaning_duration =
Duration::from_secs(config.cleaning.pending_scrape_cleaning_interval); Duration::from_secs(config.cleaning.pending_scrape_cleaning_interval);
let mut connection_valid_until = ValidUntil::new(config.cleaning.max_connection_age);
let mut pending_scrape_valid_until = ValidUntil::new(config.cleaning.max_pending_scrape_age);
let mut last_connection_cleaning = Instant::now(); let mut last_connection_cleaning = Instant::now();
let mut last_pending_scrape_cleaning = Instant::now(); let mut last_pending_scrape_cleaning = Instant::now();
@ -168,6 +171,8 @@ pub fn run_socket_worker(
&mut buffer, &mut buffer,
&request_sender, &request_sender,
&mut local_responses, &mut local_responses,
connection_valid_until,
pending_scrape_valid_until,
); );
} }
} }
@ -182,9 +187,15 @@ pub fn run_socket_worker(
local_responses.drain(..), local_responses.drain(..),
); );
// Run periodic ValidUntil updates and state cleaning
if iter_counter % 32 == 0 { if iter_counter % 32 == 0 {
let now = Instant::now(); let now = Instant::now();
connection_valid_until =
ValidUntil::new_with_now(now, config.cleaning.max_connection_age);
pending_scrape_valid_until =
ValidUntil::new_with_now(now, config.cleaning.max_pending_scrape_age);
if now > last_connection_cleaning + connection_cleaning_duration { if now > last_connection_cleaning + connection_cleaning_duration {
connections.clean(); connections.clean();
@ -212,13 +223,12 @@ fn read_requests(
buffer: &mut [u8], buffer: &mut [u8],
request_sender: &ConnectedRequestSender, request_sender: &ConnectedRequestSender,
local_responses: &mut Vec<(Response, SocketAddr)>, local_responses: &mut Vec<(Response, SocketAddr)>,
connection_valid_until: ValidUntil,
pending_scrape_valid_until: ValidUntil,
) { ) {
let mut requests_received: usize = 0; let mut requests_received: usize = 0;
let mut bytes_received: usize = 0; let mut bytes_received: usize = 0;
let connection_valid_until = ValidUntil::new(config.cleaning.max_connection_age);
let pending_scrape_valid_until = ValidUntil::new(config.cleaning.max_pending_scrape_age);
let mut access_list_cache = create_access_list_cache(&state.access_list); let mut access_list_cache = create_access_list_cache(&state.access_list);
loop { loop {