From a1f796ad4c7e3ae2ca401d737d05795fffbe3a8a Mon Sep 17 00:00:00 2001 From: Nazar Mokrynskyi Date: Tue, 22 Oct 2024 12:25:56 +0300 Subject: [PATCH] Avoid replotting the same sector more than once --- .../src/single_disk_farm/plotting.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/crates/subspace-farmer/src/single_disk_farm/plotting.rs b/crates/subspace-farmer/src/single_disk_farm/plotting.rs index 82aef75203..3dac0708c5 100644 --- a/crates/subspace-farmer/src/single_disk_farm/plotting.rs +++ b/crates/subspace-farmer/src/single_disk_farm/plotting.rs @@ -294,6 +294,15 @@ where } = sector_to_plot; trace!("Preparing to plot sector"); + // Inform others that this sector is being modified + { + let mut sectors_being_modified = sectors_being_modified.write().await; + if !sectors_being_modified.insert(sector_index) { + debug!("Skipped sector plotting, it is already in progress"); + return PlotSingleSectorResult::Skipped; + } + } + let maybe_old_sector_metadata = sectors_metadata .read() .await @@ -384,7 +393,6 @@ where plot_file, metadata_file, handlers, - sectors_being_modified, global_mutex, progress_receiver, metrics, @@ -492,7 +500,6 @@ async fn plot_single_sector_internal( plot_file: &Arc, metadata_file: &Arc, handlers: &Handlers, - sectors_being_modified: &AsyncRwLock>, global_mutex: &AsyncMutex<()>, mut progress_receiver: mpsc::Receiver, metrics: &Option>, @@ -569,9 +576,6 @@ async fn plot_single_sector_internal( } }; - // Inform others that this sector is being modified - sectors_being_modified.write().await.insert(sector_index); - { // Take mutex briefly to make sure writing is allowed right now global_mutex.lock().await;