From 40d9941c2663709ace4c8e048bfd5ad5bcb60473 Mon Sep 17 00:00:00 2001 From: Nazar Mokrynskyi Date: Fri, 29 Apr 2022 00:20:57 +0300 Subject: [PATCH] Faster segment acknowledgement on the farmer --- crates/sc-consensus-subspace-rpc/src/lib.rs | 4 +++- crates/subspace-farmer/src/archiving.rs | 10 +++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/crates/sc-consensus-subspace-rpc/src/lib.rs b/crates/sc-consensus-subspace-rpc/src/lib.rs index 1b78b953c67dd..7af10b34b490b 100644 --- a/crates/sc-consensus-subspace-rpc/src/lib.rs +++ b/crates/sc-consensus-subspace-rpc/src/lib.rs @@ -557,7 +557,9 @@ where if let Some(mut sender) = maybe_sender { if let Err(error) = sender.send(()).await { - warn!("Failed to acknowledge archived segment: {error}"); + if !error.is_disconnected() { + warn!("Failed to acknowledge archived segment: {error}"); + } } } diff --git a/crates/subspace-farmer/src/archiving.rs b/crates/subspace-farmer/src/archiving.rs index a3569dfc12b5c..85a3c98ddcaeb 100644 --- a/crates/subspace-farmer/src/archiving.rs +++ b/crates/subspace-farmer/src/archiving.rs @@ -171,13 +171,17 @@ impl Archiving { Some(archived_segment) => { let segment_index = archived_segment.root_block.segment_index(); let (acknowledge_sender, acknowledge_receiver) = oneshot::channel(); + // Acknowledge immediately to allow node to continue sync quickly, + // but this will miss some segments in case farmer crashed in the + // meantime. Ideally we'd acknowledge after, but it makes node wait + // for it and the whole process very sequential. + if let Err(error) = client.acknowledge_archived_segment(segment_index).await { + error!("Failed to send archived segment acknowledgement: {error}"); + } if let Err(error) = archived_segments_sync_sender.send((archived_segment, acknowledge_sender)) { error!("Failed to send archived segment for plotting: {error}"); } let _ = acknowledge_receiver.await; - if let Err(error) = client.acknowledge_archived_segment(segment_index).await { - error!("Failed to send archived segment acknowledgement: {error}"); - } }, None => { debug!("Subscription has forcefully closed from node side!");