From ee74834b795004a4c38dc17ba693d66b0a4a7638 Mon Sep 17 00:00:00 2001 From: Tim Bruijnzeels Date: Thu, 21 Dec 2023 10:36:42 +0100 Subject: [PATCH] Fix locking when downloading RIS dump files (#1177) --- src/commons/bgp/analyser.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/commons/bgp/analyser.rs b/src/commons/bgp/analyser.rs index 8b644f8a5..14267f5d8 100644 --- a/src/commons/bgp/analyser.rs +++ b/src/commons/bgp/analyser.rs @@ -44,14 +44,17 @@ impl BgpAnalyser { pub async fn update(&self) -> Result { if let Some(loader) = &self.dump_loader { - let mut seen = self.seen.write().await; - if let Some(last_time) = seen.last_checked() { - if (last_time + Duration::minutes(BGP_RIS_REFRESH_MINUTES)) > Time::now() { - trace!("Will not check BGP Ris Dumps until the refresh interval has passed"); - return Ok(false); // no need to update yet + { + let seen = self.seen.read().await; + if let Some(last_time) = seen.last_checked() { + if (last_time + Duration::minutes(BGP_RIS_REFRESH_MINUTES)) > Time::now() { + trace!("Will not check BGP Ris Dumps until the refresh interval has passed"); + return Ok(false); // no need to update yet + } } } let announcements = loader.download_updates().await?; + let mut seen = self.seen.write().await; if seen.equivalent(&announcements) { debug!("BGP Ris Dumps unchanged"); seen.update_checked();