From 174c14bad63ce8154db5748e657907720957fc64 Mon Sep 17 00:00:00 2001 From: Nazar Mokrynskyi Date: Wed, 2 Aug 2023 23:29:26 +0300 Subject: [PATCH 1/3] Fix segment header limits --- crates/subspace-rpc-primitives/src/lib.rs | 2 +- crates/subspace-service/src/dsn.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/subspace-rpc-primitives/src/lib.rs b/crates/subspace-rpc-primitives/src/lib.rs index 8f63a71525..910a09b74d 100644 --- a/crates/subspace-rpc-primitives/src/lib.rs +++ b/crates/subspace-rpc-primitives/src/lib.rs @@ -23,7 +23,7 @@ use subspace_farmer_components::FarmerProtocolInfo; use subspace_networking::libp2p::Multiaddr; /// Defines a limit for number of segments that can be requested over RPC -pub const MAX_SEGMENT_HEADERS_PER_REQUEST: usize = 300; +pub const MAX_SEGMENT_HEADERS_PER_REQUEST: usize = 1000; /// Information necessary for farmer application #[derive(Debug, Clone, Serialize, Deserialize)] diff --git a/crates/subspace-service/src/dsn.rs b/crates/subspace-service/src/dsn.rs index 9e64ca623c..1adc148ba6 100644 --- a/crates/subspace-service/src/dsn.rs +++ b/crates/subspace-service/src/dsn.rs @@ -16,7 +16,7 @@ use subspace_networking::{ use thiserror::Error; use tracing::{debug, error, trace}; -const SEGMENT_HEADERS_NUMBER_LIMIT: u64 = 100; +const SEGMENT_HEADERS_NUMBER_LIMIT: u64 = 1000; /// Errors that might happen during DSN configuration. #[derive(Debug, Error)] From 382fc37a1748473046d62e04eb2d708ca397f272 Mon Sep 17 00:00:00 2001 From: Nazar Mokrynskyi Date: Wed, 2 Aug 2023 23:35:54 +0300 Subject: [PATCH 2/3] Clamp the requested number of segment headers to static limit on node if exceeded --- .../src/bin/subspace-farmer/commands/farm/dsn.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm/dsn.rs b/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm/dsn.rs index b0a3187be5..0dd2977cb3 100644 --- a/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm/dsn.rs +++ b/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm/dsn.rs @@ -209,14 +209,15 @@ pub(super) fn configure_dsn( segment_indexes.clone() } SegmentHeaderRequest::LastSegmentHeaders { - segment_header_number, + mut segment_header_number, } => { if segment_header_number > SEGMENT_HEADER_NUMBER_LIMIT { debug!( %segment_header_number, "Segment header number exceeded the limit." ); - return None; + + segment_header_number = SEGMENT_HEADER_NUMBER_LIMIT; } let last_segment_index = SegmentIndex::from( From 22b59228e1465ed33ef348e958ea519866862eb3 Mon Sep 17 00:00:00 2001 From: Nazar Mokrynskyi Date: Wed, 2 Aug 2023 23:38:08 +0300 Subject: [PATCH 3/3] Use RPC segment headers limit in farmer --- .../src/bin/subspace-farmer/commands/farm/dsn.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm/dsn.rs b/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm/dsn.rs index 0dd2977cb3..8801410dc8 100644 --- a/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm/dsn.rs +++ b/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm/dsn.rs @@ -21,9 +21,13 @@ use subspace_networking::{ PieceByHashRequestHandler, PieceByHashResponse, SegmentHeaderBySegmentIndexesRequestHandler, SegmentHeaderRequest, SegmentHeaderResponse, }; +use subspace_rpc_primitives::MAX_SEGMENT_HEADERS_PER_REQUEST; use tracing::{debug, error, info, Instrument}; -const SEGMENT_HEADER_NUMBER_LIMIT: u64 = 1000; +/// How many segment headers can be requested at a time. +/// +/// Must be the same as RPC limit since all requests go to the node anyway. +const SEGMENT_HEADER_NUMBER_LIMIT: u64 = MAX_SEGMENT_HEADERS_PER_REQUEST as u64; #[allow(clippy::type_complexity, clippy::too_many_arguments)] pub(super) fn configure_dsn(