pub struct AcknowledgementPipelineConfig {
pub ack_buffer_interval: Duration,
pub ack_grouping_capacity: usize,
pub ticket_ack_buffer_size: usize,
pub ack_out_buffer_size: usize,
pub ack_input_concurrency: Option<usize>,
pub ack_output_concurrency: Option<usize>,
}Expand description
Configuration for the acknowledgement processing pipeline.
Fields§
§ack_buffer_interval: DurationInterval for which to wait to buffer acknowledgements before sending them out.
Default is 200 ms.
ack_grouping_capacity: usizeInitial capacity when grouping outgoing acknowledgements.
If set too low, it causes additional reallocations in the outgoing acknowledgement processing pipeline.
The value should grow if ack_buffer_interval grows.
Default is 5.
ticket_ack_buffer_size: usizeCapacity of the incoming_ack MPSC channel carrying received acknowledgements
to the ticket-ack processing pipeline.
The previous hardcoded value of 1_000_000 pre-allocated ~MBs of ring buffer per node even
though real-world throughput rarely saturates more than a few thousand entries. Let the
50 ms sink timeouts (QUEUE_SEND_TIMEOUT) propagate backpressure instead.
Default is 50_000.
ack_out_buffer_size: usizeCapacity of the outgoing_ack MPSC channel carrying acknowledgements to be sent back
to the previous hop.
Default is 50_000. See ticket_ack_buffer_size for the
rationale on why this is smaller than the original hardcoded 1_000_000.
ack_input_concurrency: Option<usize>Maximum concurrency when processing incoming (received) acknowledgements.
None or Some(0) both fall back to a default of 10.
ack_output_concurrency: Option<usize>Maximum concurrency when processing outgoing (sent-back) acknowledgements.
None or Some(0) both fall back to a default of 10.
Trait Implementations§
Source§impl Clone for AcknowledgementPipelineConfig
impl Clone for AcknowledgementPipelineConfig
Source§fn clone(&self) -> AcknowledgementPipelineConfig
fn clone(&self) -> AcknowledgementPipelineConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Default for AcknowledgementPipelineConfig
impl Default for AcknowledgementPipelineConfig
Source§fn default() -> Self
fn default() -> Self
Return AcknowledgementPipelineConfig { ack_buffer_interval: default_ack_buffer_interval(), ack_grouping_capacity: default_ack_grouping_capacity(), ticket_ack_buffer_size: default_ticket_ack_buffer_size(), ack_out_buffer_size: default_ack_out_buffer_size(), ack_input_concurrency: Default::default(), ack_output_concurrency: Default::default() }
Source§impl<'de> Deserialize<'de> for AcknowledgementPipelineConfig
impl<'de> Deserialize<'de> for AcknowledgementPipelineConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for AcknowledgementPipelineConfig
impl PartialEq for AcknowledgementPipelineConfig
Source§fn eq(&self, other: &AcknowledgementPipelineConfig) -> bool
fn eq(&self, other: &AcknowledgementPipelineConfig) -> bool
self and other values to be equal, and is used by ==.Source§impl Validate for AcknowledgementPipelineConfig
impl Validate for AcknowledgementPipelineConfig
impl Copy for AcknowledgementPipelineConfig
impl Eq for AcknowledgementPipelineConfig
impl StructuralPartialEq for AcknowledgementPipelineConfig
Auto Trait Implementations§
impl Freeze for AcknowledgementPipelineConfig
impl RefUnwindSafe for AcknowledgementPipelineConfig
impl Send for AcknowledgementPipelineConfig
impl Sync for AcknowledgementPipelineConfig
impl Unpin for AcknowledgementPipelineConfig
impl UnwindSafe for AcknowledgementPipelineConfig
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more