diff --git a/src/sinks/aws_cloudwatch_logs/service.rs b/src/sinks/aws_cloudwatch_logs/service.rs index d3d6fcb4dc44b..468864284b923 100644 --- a/src/sinks/aws_cloudwatch_logs/service.rs +++ b/src/sinks/aws_cloudwatch_logs/service.rs @@ -33,14 +33,16 @@ use crate::sinks::{ config::CloudwatchLogsSinkConfig, request, retry::CloudwatchRetryLogic, sink::BatchCloudwatchRequest, CloudwatchKey, }, - util::{retries::FixedRetryPolicy, EncodedLength, TowerRequestConfig, TowerRequestSettings}, + util::{ + retries::FibonacciRetryPolicy, EncodedLength, TowerRequestConfig, TowerRequestSettings, + }, }; type Svc = Buffer< ConcurrencyLimit< RateLimit< Retry< - FixedRetryPolicy>, + FibonacciRetryPolicy>, Buffer, Vec>, >, >, diff --git a/src/sinks/util/adaptive_concurrency/tests.rs b/src/sinks/util/adaptive_concurrency/tests.rs index 0aa059fd11a81..9a13f3c8f4831 100644 --- a/src/sinks/util/adaptive_concurrency/tests.rs +++ b/src/sinks/util/adaptive_concurrency/tests.rs @@ -35,8 +35,8 @@ use crate::{ metrics, sinks::{ util::{ - retries::RetryLogic, BatchSettings, Concurrency, EncodedEvent, EncodedLength, - TowerRequestConfig, VecBuffer, + retries::{JitterMode, RetryLogic}, + BatchSettings, Concurrency, EncodedEvent, EncodedLength, TowerRequestConfig, VecBuffer, }, Healthcheck, VectorSink, }, @@ -417,6 +417,7 @@ async fn run_test(params: TestParams) -> TestResults { concurrency: params.concurrency, rate_limit_num: Some(9999), timeout_secs: Some(1), + retry_jitter_mode: JitterMode::None, ..Default::default() }, params, diff --git a/src/sinks/util/retries.rs b/src/sinks/util/retries.rs index 8bed68bfe61ce..cccfbd744494f 100644 --- a/src/sinks/util/retries.rs +++ b/src/sinks/util/retries.rs @@ -10,6 +10,7 @@ use std::{ use futures::FutureExt; use tokio::time::{sleep, Sleep}; use tower::{retry::Policy, timeout::error::Elapsed}; +use vector_lib::configurable::configurable_component; use crate::Error; @@ -34,50 +35,87 @@ pub trait RetryLogic: Clone + Send + Sync + 'static { } } +/// The jitter mode to use for retry backoff behavior. +#[configurable_component] +#[derive(Clone, Copy, Debug, Default)] +pub enum JitterMode { + /// No jitter. + None, + + /// Full jitter. + /// + /// The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + /// strategy. + /// + /// Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + /// of creating accidental denial of service (DoS) conditions against your own systems when + /// many clients are recovering from a failure state. + #[default] + Full, +} + #[derive(Debug, Clone)] -pub struct FixedRetryPolicy { +pub struct FibonacciRetryPolicy { remaining_attempts: usize, previous_duration: Duration, current_duration: Duration, + jitter_mode: JitterMode, + current_jitter_duration: Duration, max_duration: Duration, logic: L, } pub struct RetryPolicyFuture { delay: Pin>, - policy: FixedRetryPolicy, + policy: FibonacciRetryPolicy, } -impl FixedRetryPolicy { - pub const fn new( +impl FibonacciRetryPolicy { + pub fn new( remaining_attempts: usize, initial_backoff: Duration, max_duration: Duration, logic: L, + jitter_mode: JitterMode, ) -> Self { - FixedRetryPolicy { + FibonacciRetryPolicy { remaining_attempts, previous_duration: Duration::from_secs(0), current_duration: initial_backoff, + jitter_mode, + current_jitter_duration: Self::add_full_jitter(initial_backoff), max_duration, logic, } } - fn advance(&self) -> FixedRetryPolicy { - let next_duration: Duration = self.previous_duration + self.current_duration; + fn add_full_jitter(d: Duration) -> Duration { + let jitter = (rand::random::() % (d.as_millis() as u64)) + 1; + Duration::from_millis(jitter) + } + + fn advance(&self) -> FibonacciRetryPolicy { + let next_duration: Duration = cmp::min( + self.previous_duration + self.current_duration, + self.max_duration, + ); - FixedRetryPolicy { + FibonacciRetryPolicy { remaining_attempts: self.remaining_attempts - 1, previous_duration: self.current_duration, - current_duration: cmp::min(next_duration, self.max_duration), + current_duration: next_duration, + current_jitter_duration: Self::add_full_jitter(next_duration), + jitter_mode: self.jitter_mode, max_duration: self.max_duration, logic: self.logic.clone(), } } const fn backoff(&self) -> Duration { - self.current_duration + match self.jitter_mode { + JitterMode::None => self.current_duration, + JitterMode::Full => self.current_jitter_duration, + } } fn build_retry(&self) -> RetryPolicyFuture { @@ -89,7 +127,7 @@ impl FixedRetryPolicy { } } -impl Policy for FixedRetryPolicy +impl Policy for FibonacciRetryPolicy where Req: Clone, L: RetryLogic, @@ -168,7 +206,7 @@ where impl Unpin for RetryPolicyFuture {} impl Future for RetryPolicyFuture { - type Output = FixedRetryPolicy; + type Output = FibonacciRetryPolicy; fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { std::task::ready!(self.delay.poll_unpin(cx)); @@ -288,11 +326,12 @@ mod tests { time::pause(); - let policy = FixedRetryPolicy::new( + let policy = FibonacciRetryPolicy::new( 5, Duration::from_secs(1), Duration::from_secs(10), SvcRetryLogic, + JitterMode::None, ); let (mut svc, mut handle) = mock::spawn_layer(RetryLayer::new(policy)); @@ -317,11 +356,12 @@ mod tests { async fn service_error_no_retry() { trace_init(); - let policy = FixedRetryPolicy::new( + let policy = FibonacciRetryPolicy::new( 5, Duration::from_secs(1), Duration::from_secs(10), SvcRetryLogic, + JitterMode::None, ); let (mut svc, mut handle) = mock::spawn_layer(RetryLayer::new(policy)); @@ -339,11 +379,12 @@ mod tests { time::pause(); - let policy = FixedRetryPolicy::new( + let policy = FibonacciRetryPolicy::new( 5, Duration::from_secs(1), Duration::from_secs(10), SvcRetryLogic, + JitterMode::None, ); let (mut svc, mut handle) = mock::spawn_layer(RetryLayer::new(policy)); @@ -363,11 +404,12 @@ mod tests { #[test] fn backoff_grows_to_max() { - let mut policy = FixedRetryPolicy::new( + let mut policy = FibonacciRetryPolicy::new( 10, Duration::from_secs(1), Duration::from_secs(10), SvcRetryLogic, + JitterMode::None, ); assert_eq!(Duration::from_secs(1), policy.backoff()); @@ -393,6 +435,49 @@ mod tests { assert_eq!(Duration::from_secs(10), policy.backoff()); } + #[test] + fn backoff_grows_to_max_with_jitter() { + let max_duration = Duration::from_secs(10); + let mut policy = FibonacciRetryPolicy::new( + 10, + Duration::from_secs(1), + max_duration, + SvcRetryLogic, + JitterMode::Full, + ); + + let expected_fib = [1, 1, 2, 3, 5, 8]; + + for (i, &exp_fib_secs) in expected_fib.iter().enumerate() { + let backoff = policy.backoff(); + let upper_bound = Duration::from_secs(exp_fib_secs); + + // Check if the backoff is within the expected range, considering the jitter + assert!( + !backoff.is_zero() && backoff <= upper_bound, + "Attempt {}: Expected backoff to be within 0 and {:?}, got {:?}", + i + 1, + upper_bound, + backoff + ); + + policy = policy.advance(); + } + + // Once the max backoff is reached, it should not exceed the max backoff. + for _ in 0..4 { + let backoff = policy.backoff(); + assert!( + !backoff.is_zero() && backoff <= max_duration, + "Expected backoff to not exceed {:?}, got {:?}", + max_duration, + backoff + ); + + policy = policy.advance(); + } + } + #[derive(Debug, Clone)] struct SvcRetryLogic; diff --git a/src/sinks/util/service.rs b/src/sinks/util/service.rs index 0b01cfabfa353..f979a4e175889 100644 --- a/src/sinks/util/service.rs +++ b/src/sinks/util/service.rs @@ -25,7 +25,7 @@ use crate::{ adaptive_concurrency::{ AdaptiveConcurrencyLimit, AdaptiveConcurrencyLimitLayer, AdaptiveConcurrencySettings, }, - retries::{FixedRetryPolicy, RetryLogic}, + retries::{FibonacciRetryPolicy, JitterMode, RetryLogic}, service::map::MapLayer, sink::Response, Batch, BatchSink, Partition, PartitionBatchSink, @@ -37,13 +37,14 @@ mod health; mod map; pub mod net; -pub type Svc = RateLimit, Timeout>, L>>; +pub type Svc = + RateLimit, Timeout>, L>>; pub type TowerBatchedSink = BatchSink, B>; pub type TowerPartitionSink = PartitionBatchSink, B, K>; // Distributed service types pub type DistributedService = RateLimit< - Retry, Buffer, Req>, Req>>, + Retry, Buffer, Req>, Req>>, >; pub type DiscoveryService = BoxStream<'static, Result>, crate::Error>>; @@ -85,7 +86,9 @@ impl ServiceBuilderExt for ServiceBuilder { /// Middleware settings for outbound requests. /// -/// Various settings can be configured, such as concurrency and rate limits, timeouts, etc. +/// Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. +/// +/// Note that the retry backoff policy follows the Fibonacci sequence. #[serde_as] #[configurable_component] #[configurable(metadata(docs::advanced))] @@ -138,6 +141,10 @@ pub struct TowerRequestConfig { #[configurable(metadata(docs::human_name = "Retry Initial Backoff"))] pub retry_initial_backoff_secs: Option, + #[configurable(derived)] + #[serde(default)] + pub retry_jitter_mode: JitterMode, + #[configurable(derived)] #[serde(default)] pub adaptive_concurrency: AdaptiveConcurrencySettings, @@ -184,6 +191,7 @@ impl Default for TowerRequestConfig { retry_max_duration_secs: default_retry_max_duration_secs(), retry_initial_backoff_secs: default_retry_initial_backoff_secs(), adaptive_concurrency: AdaptiveConcurrencySettings::default(), + retry_jitter_mode: JitterMode::default(), } } } @@ -265,6 +273,7 @@ impl TowerRequestConfig { .unwrap(), ), adaptive_concurrency: self.adaptive_concurrency, + retry_jitter_mode: self.retry_jitter_mode, } } } @@ -279,15 +288,17 @@ pub struct TowerRequestSettings { pub retry_max_duration_secs: Duration, pub retry_initial_backoff_secs: Duration, pub adaptive_concurrency: AdaptiveConcurrencySettings, + pub retry_jitter_mode: JitterMode, } impl TowerRequestSettings { - pub const fn retry_policy(&self, logic: L) -> FixedRetryPolicy { - FixedRetryPolicy::new( + pub fn retry_policy(&self, logic: L) -> FibonacciRetryPolicy { + FibonacciRetryPolicy::new( self.retry_attempts, self.retry_initial_backoff_secs, self.retry_max_duration_secs, logic, + self.retry_jitter_mode, ) } diff --git a/website/cue/reference/components/sinks/base/appsignal.cue b/website/cue/reference/components/sinks/base/appsignal.cue index 48b3e4b518f7c..4101865b14d3f 100644 --- a/website/cue/reference/components/sinks/base/appsignal.cue +++ b/website/cue/reference/components/sinks/base/appsignal.cue @@ -141,7 +141,9 @@ base: components: sinks: appsignal: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -273,6 +275,26 @@ base: components: sinks: appsignal: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/aws_cloudwatch_logs.cue b/website/cue/reference/components/sinks/base/aws_cloudwatch_logs.cue index 162b8dbe4853f..e75a48e3cb396 100644 --- a/website/cue/reference/components/sinks/base/aws_cloudwatch_logs.cue +++ b/website/cue/reference/components/sinks/base/aws_cloudwatch_logs.cue @@ -625,6 +625,26 @@ base: components: sinks: aws_cloudwatch_logs: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/aws_cloudwatch_metrics.cue b/website/cue/reference/components/sinks/base/aws_cloudwatch_metrics.cue index 16e90e50e5193..3cb01f4f94252 100644 --- a/website/cue/reference/components/sinks/base/aws_cloudwatch_metrics.cue +++ b/website/cue/reference/components/sinks/base/aws_cloudwatch_metrics.cue @@ -225,7 +225,9 @@ base: components: sinks: aws_cloudwatch_metrics: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -357,6 +359,26 @@ base: components: sinks: aws_cloudwatch_metrics: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/aws_kinesis_firehose.cue b/website/cue/reference/components/sinks/base/aws_kinesis_firehose.cue index c5ba35bba8dea..424f421b127c7 100644 --- a/website/cue/reference/components/sinks/base/aws_kinesis_firehose.cue +++ b/website/cue/reference/components/sinks/base/aws_kinesis_firehose.cue @@ -449,7 +449,9 @@ base: components: sinks: aws_kinesis_firehose: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -581,6 +583,26 @@ base: components: sinks: aws_kinesis_firehose: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/aws_kinesis_streams.cue b/website/cue/reference/components/sinks/base/aws_kinesis_streams.cue index 1e4e3387b2581..193c26642c0fc 100644 --- a/website/cue/reference/components/sinks/base/aws_kinesis_streams.cue +++ b/website/cue/reference/components/sinks/base/aws_kinesis_streams.cue @@ -458,7 +458,9 @@ base: components: sinks: aws_kinesis_streams: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -590,6 +592,26 @@ base: components: sinks: aws_kinesis_streams: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/aws_s3.cue b/website/cue/reference/components/sinks/base/aws_s3.cue index 55ad8f643d934..b039d0e96127d 100644 --- a/website/cue/reference/components/sinks/base/aws_s3.cue +++ b/website/cue/reference/components/sinks/base/aws_s3.cue @@ -695,7 +695,9 @@ base: components: sinks: aws_s3: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -827,6 +829,26 @@ base: components: sinks: aws_s3: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/aws_sns.cue b/website/cue/reference/components/sinks/base/aws_sns.cue index 81b67a6c45565..3d64fa581e726 100644 --- a/website/cue/reference/components/sinks/base/aws_sns.cue +++ b/website/cue/reference/components/sinks/base/aws_sns.cue @@ -401,7 +401,9 @@ base: components: sinks: aws_sns: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -533,6 +535,26 @@ base: components: sinks: aws_sns: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/aws_sqs.cue b/website/cue/reference/components/sinks/base/aws_sqs.cue index 28e012cc9a1a5..6e2bf39d8b01d 100644 --- a/website/cue/reference/components/sinks/base/aws_sqs.cue +++ b/website/cue/reference/components/sinks/base/aws_sqs.cue @@ -406,7 +406,9 @@ base: components: sinks: aws_sqs: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -538,6 +540,26 @@ base: components: sinks: aws_sqs: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/axiom.cue b/website/cue/reference/components/sinks/base/axiom.cue index 2de88265fc8f8..d17bbfd74cb78 100644 --- a/website/cue/reference/components/sinks/base/axiom.cue +++ b/website/cue/reference/components/sinks/base/axiom.cue @@ -222,6 +222,26 @@ base: components: sinks: axiom: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/azure_blob.cue b/website/cue/reference/components/sinks/base/azure_blob.cue index 482f927432613..6a0830ccf29fe 100644 --- a/website/cue/reference/components/sinks/base/azure_blob.cue +++ b/website/cue/reference/components/sinks/base/azure_blob.cue @@ -443,7 +443,9 @@ base: components: sinks: azure_blob: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -575,6 +577,26 @@ base: components: sinks: azure_blob: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/azure_monitor_logs.cue b/website/cue/reference/components/sinks/base/azure_monitor_logs.cue index e9f4c16b7e31f..9ec8bae1899a2 100644 --- a/website/cue/reference/components/sinks/base/azure_monitor_logs.cue +++ b/website/cue/reference/components/sinks/base/azure_monitor_logs.cue @@ -132,7 +132,9 @@ base: components: sinks: azure_monitor_logs: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -264,6 +266,26 @@ base: components: sinks: azure_monitor_logs: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/clickhouse.cue b/website/cue/reference/components/sinks/base/clickhouse.cue index 52c00efdd4b71..ff8eef242d1d1 100644 --- a/website/cue/reference/components/sinks/base/clickhouse.cue +++ b/website/cue/reference/components/sinks/base/clickhouse.cue @@ -190,7 +190,9 @@ base: components: sinks: clickhouse: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -322,6 +324,26 @@ base: components: sinks: clickhouse: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/databend.cue b/website/cue/reference/components/sinks/base/databend.cue index 8bc2434cbb1b7..3c53c1d76dad2 100644 --- a/website/cue/reference/components/sinks/base/databend.cue +++ b/website/cue/reference/components/sinks/base/databend.cue @@ -288,7 +288,9 @@ base: components: sinks: databend: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -420,6 +422,26 @@ base: components: sinks: databend: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/datadog_events.cue b/website/cue/reference/components/sinks/base/datadog_events.cue index e6ca4d22c11cf..c139cc9ae924e 100644 --- a/website/cue/reference/components/sinks/base/datadog_events.cue +++ b/website/cue/reference/components/sinks/base/datadog_events.cue @@ -56,7 +56,9 @@ base: components: sinks: datadog_events: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -188,6 +190,26 @@ base: components: sinks: datadog_events: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/datadog_logs.cue b/website/cue/reference/components/sinks/base/datadog_logs.cue index af56186188a53..6bcbb91065ba1 100644 --- a/website/cue/reference/components/sinks/base/datadog_logs.cue +++ b/website/cue/reference/components/sinks/base/datadog_logs.cue @@ -293,6 +293,26 @@ base: components: sinks: datadog_logs: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/datadog_metrics.cue b/website/cue/reference/components/sinks/base/datadog_metrics.cue index 77333e8c2d722..a27fd554da6e3 100644 --- a/website/cue/reference/components/sinks/base/datadog_metrics.cue +++ b/website/cue/reference/components/sinks/base/datadog_metrics.cue @@ -98,7 +98,9 @@ base: components: sinks: datadog_metrics: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -230,6 +232,26 @@ base: components: sinks: datadog_metrics: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/datadog_traces.cue b/website/cue/reference/components/sinks/base/datadog_traces.cue index 1564e8f720f2d..da6a8374162d5 100644 --- a/website/cue/reference/components/sinks/base/datadog_traces.cue +++ b/website/cue/reference/components/sinks/base/datadog_traces.cue @@ -122,7 +122,9 @@ base: components: sinks: datadog_traces: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -254,6 +256,26 @@ base: components: sinks: datadog_traces: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/elasticsearch.cue b/website/cue/reference/components/sinks/base/elasticsearch.cue index 1e039927ff1bc..0839e8e27126e 100644 --- a/website/cue/reference/components/sinks/base/elasticsearch.cue +++ b/website/cue/reference/components/sinks/base/elasticsearch.cue @@ -689,6 +689,26 @@ base: components: sinks: elasticsearch: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/gcp_chronicle_unstructured.cue b/website/cue/reference/components/sinks/base/gcp_chronicle_unstructured.cue index 0c5ab5adf1115..2a6d9ba648a57 100644 --- a/website/cue/reference/components/sinks/base/gcp_chronicle_unstructured.cue +++ b/website/cue/reference/components/sinks/base/gcp_chronicle_unstructured.cue @@ -362,7 +362,9 @@ base: components: sinks: gcp_chronicle_unstructured: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -494,6 +496,26 @@ base: components: sinks: gcp_chronicle_unstructured: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/gcp_cloud_storage.cue b/website/cue/reference/components/sinks/base/gcp_cloud_storage.cue index 8bcf9922c23a0..b23b3e6284749 100644 --- a/website/cue/reference/components/sinks/base/gcp_cloud_storage.cue +++ b/website/cue/reference/components/sinks/base/gcp_cloud_storage.cue @@ -526,7 +526,9 @@ base: components: sinks: gcp_cloud_storage: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -658,6 +660,26 @@ base: components: sinks: gcp_cloud_storage: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/gcp_pubsub.cue b/website/cue/reference/components/sinks/base/gcp_pubsub.cue index c2b12e0240170..c46639fe97f55 100644 --- a/website/cue/reference/components/sinks/base/gcp_pubsub.cue +++ b/website/cue/reference/components/sinks/base/gcp_pubsub.cue @@ -353,7 +353,9 @@ base: components: sinks: gcp_pubsub: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -485,6 +487,26 @@ base: components: sinks: gcp_pubsub: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/gcp_stackdriver_logs.cue b/website/cue/reference/components/sinks/base/gcp_stackdriver_logs.cue index 291261fe47866..c173f99b4ca7a 100644 --- a/website/cue/reference/components/sinks/base/gcp_stackdriver_logs.cue +++ b/website/cue/reference/components/sinks/base/gcp_stackdriver_logs.cue @@ -178,7 +178,9 @@ base: components: sinks: gcp_stackdriver_logs: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -310,6 +312,26 @@ base: components: sinks: gcp_stackdriver_logs: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/gcp_stackdriver_metrics.cue b/website/cue/reference/components/sinks/base/gcp_stackdriver_metrics.cue index 3c62004943d17..ab30447d4226e 100644 --- a/website/cue/reference/components/sinks/base/gcp_stackdriver_metrics.cue +++ b/website/cue/reference/components/sinks/base/gcp_stackdriver_metrics.cue @@ -116,7 +116,9 @@ base: components: sinks: gcp_stackdriver_metrics: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -248,6 +250,26 @@ base: components: sinks: gcp_stackdriver_metrics: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/greptimedb.cue b/website/cue/reference/components/sinks/base/greptimedb.cue index ab78c8e8f8369..101d10de74e96 100644 --- a/website/cue/reference/components/sinks/base/greptimedb.cue +++ b/website/cue/reference/components/sinks/base/greptimedb.cue @@ -104,7 +104,9 @@ base: components: sinks: greptimedb: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -236,6 +238,26 @@ base: components: sinks: greptimedb: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/honeycomb.cue b/website/cue/reference/components/sinks/base/honeycomb.cue index 9b762b95e873b..34a42cc46c904 100644 --- a/website/cue/reference/components/sinks/base/honeycomb.cue +++ b/website/cue/reference/components/sinks/base/honeycomb.cue @@ -101,7 +101,9 @@ base: components: sinks: honeycomb: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -233,6 +235,26 @@ base: components: sinks: honeycomb: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/http.cue b/website/cue/reference/components/sinks/base/http.cue index 43a14b957d084..f5606049f26f1 100644 --- a/website/cue/reference/components/sinks/base/http.cue +++ b/website/cue/reference/components/sinks/base/http.cue @@ -612,6 +612,26 @@ base: components: sinks: http: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/humio_logs.cue b/website/cue/reference/components/sinks/base/humio_logs.cue index 6529d8294f36a..2150718e1676a 100644 --- a/website/cue/reference/components/sinks/base/humio_logs.cue +++ b/website/cue/reference/components/sinks/base/humio_logs.cue @@ -402,7 +402,9 @@ base: components: sinks: humio_logs: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -534,6 +536,26 @@ base: components: sinks: humio_logs: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/humio_metrics.cue b/website/cue/reference/components/sinks/base/humio_metrics.cue index c45509ce09b10..33a5fe17fbdb1 100644 --- a/website/cue/reference/components/sinks/base/humio_metrics.cue +++ b/website/cue/reference/components/sinks/base/humio_metrics.cue @@ -204,7 +204,9 @@ base: components: sinks: humio_metrics: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -336,6 +338,26 @@ base: components: sinks: humio_metrics: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/influxdb_logs.cue b/website/cue/reference/components/sinks/base/influxdb_logs.cue index 3dafc496d1e02..99fb4a62f06a0 100644 --- a/website/cue/reference/components/sinks/base/influxdb_logs.cue +++ b/website/cue/reference/components/sinks/base/influxdb_logs.cue @@ -181,7 +181,9 @@ base: components: sinks: influxdb_logs: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -313,6 +315,26 @@ base: components: sinks: influxdb_logs: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/influxdb_metrics.cue b/website/cue/reference/components/sinks/base/influxdb_metrics.cue index 11a14ac6c6b60..f09d1ab92fa4d 100644 --- a/website/cue/reference/components/sinks/base/influxdb_metrics.cue +++ b/website/cue/reference/components/sinks/base/influxdb_metrics.cue @@ -135,7 +135,9 @@ base: components: sinks: influxdb_metrics: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -267,6 +269,26 @@ base: components: sinks: influxdb_metrics: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/logdna.cue b/website/cue/reference/components/sinks/base/logdna.cue index 2067a596cbc33..f703551f05607 100644 --- a/website/cue/reference/components/sinks/base/logdna.cue +++ b/website/cue/reference/components/sinks/base/logdna.cue @@ -144,7 +144,9 @@ base: components: sinks: logdna: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -276,6 +278,26 @@ base: components: sinks: logdna: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/loki.cue b/website/cue/reference/components/sinks/base/loki.cue index 6b381045937ed..d7515db758f36 100644 --- a/website/cue/reference/components/sinks/base/loki.cue +++ b/website/cue/reference/components/sinks/base/loki.cue @@ -466,7 +466,9 @@ base: components: sinks: loki: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -598,6 +600,26 @@ base: components: sinks: loki: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/mezmo.cue b/website/cue/reference/components/sinks/base/mezmo.cue index f4e0b59357fa6..6696c940d9616 100644 --- a/website/cue/reference/components/sinks/base/mezmo.cue +++ b/website/cue/reference/components/sinks/base/mezmo.cue @@ -144,7 +144,9 @@ base: components: sinks: mezmo: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -276,6 +278,26 @@ base: components: sinks: mezmo: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/nats.cue b/website/cue/reference/components/sinks/base/nats.cue index 836ab584fcc33..f518541c0873f 100644 --- a/website/cue/reference/components/sinks/base/nats.cue +++ b/website/cue/reference/components/sinks/base/nats.cue @@ -364,7 +364,9 @@ base: components: sinks: nats: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -496,6 +498,26 @@ base: components: sinks: nats: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/new_relic.cue b/website/cue/reference/components/sinks/base/new_relic.cue index 535650bb074d4..3eaff416c157b 100644 --- a/website/cue/reference/components/sinks/base/new_relic.cue +++ b/website/cue/reference/components/sinks/base/new_relic.cue @@ -155,7 +155,9 @@ base: components: sinks: new_relic: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -287,6 +289,26 @@ base: components: sinks: new_relic: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/prometheus_remote_write.cue b/website/cue/reference/components/sinks/base/prometheus_remote_write.cue index 8858c0f99ed74..570cd97e7fdac 100644 --- a/website/cue/reference/components/sinks/base/prometheus_remote_write.cue +++ b/website/cue/reference/components/sinks/base/prometheus_remote_write.cue @@ -311,7 +311,9 @@ base: components: sinks: prometheus_remote_write: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -443,6 +445,26 @@ base: components: sinks: prometheus_remote_write: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/redis.cue b/website/cue/reference/components/sinks/base/redis.cue index 7c39ffc442c46..bab8dc3f0b5ff 100644 --- a/website/cue/reference/components/sinks/base/redis.cue +++ b/website/cue/reference/components/sinks/base/redis.cue @@ -357,7 +357,9 @@ base: components: sinks: redis: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -489,6 +491,26 @@ base: components: sinks: redis: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/sematext_logs.cue b/website/cue/reference/components/sinks/base/sematext_logs.cue index 31ac3952b4bfd..380bbac33e7e7 100644 --- a/website/cue/reference/components/sinks/base/sematext_logs.cue +++ b/website/cue/reference/components/sinks/base/sematext_logs.cue @@ -111,7 +111,9 @@ base: components: sinks: sematext_logs: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -243,6 +245,26 @@ base: components: sinks: sematext_logs: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/sematext_metrics.cue b/website/cue/reference/components/sinks/base/sematext_metrics.cue index 7fd5af992c0dd..9e4d2647258f0 100644 --- a/website/cue/reference/components/sinks/base/sematext_metrics.cue +++ b/website/cue/reference/components/sinks/base/sematext_metrics.cue @@ -93,7 +93,9 @@ base: components: sinks: sematext_metrics: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -225,6 +227,26 @@ base: components: sinks: sematext_metrics: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/splunk_hec_logs.cue b/website/cue/reference/components/sinks/base/splunk_hec_logs.cue index cfb3fc32268aa..ba2cfd6ca3108 100644 --- a/website/cue/reference/components/sinks/base/splunk_hec_logs.cue +++ b/website/cue/reference/components/sinks/base/splunk_hec_logs.cue @@ -454,7 +454,9 @@ base: components: sinks: splunk_hec_logs: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -586,6 +588,26 @@ base: components: sinks: splunk_hec_logs: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/splunk_hec_metrics.cue b/website/cue/reference/components/sinks/base/splunk_hec_metrics.cue index 820454b8e867d..591b0a1155b76 100644 --- a/website/cue/reference/components/sinks/base/splunk_hec_metrics.cue +++ b/website/cue/reference/components/sinks/base/splunk_hec_metrics.cue @@ -178,7 +178,9 @@ base: components: sinks: splunk_hec_metrics: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -310,6 +312,26 @@ base: components: sinks: splunk_hec_metrics: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false diff --git a/website/cue/reference/components/sinks/base/vector.cue b/website/cue/reference/components/sinks/base/vector.cue index dcbc25335bae0..5ac22f2c719d6 100644 --- a/website/cue/reference/components/sinks/base/vector.cue +++ b/website/cue/reference/components/sinks/base/vector.cue @@ -85,7 +85,9 @@ base: components: sinks: vector: configuration: { description: """ Middleware settings for outbound requests. - Various settings can be configured, such as concurrency and rate limits, timeouts, etc. + Various settings can be configured, such as concurrency and rate limits, timeouts, retry behavior, etc. + + Note that the retry backoff policy follows the Fibonacci sequence. """ required: false type: object: options: { @@ -217,6 +219,26 @@ base: components: sinks: vector: configuration: { unit: "seconds" } } + retry_jitter_mode: { + description: "The jitter mode to use for retry backoff behavior." + required: false + type: string: { + default: "Full" + enum: { + Full: """ + Full jitter. + + The random delay is anywhere from 0 up to the maximum current delay calculated by the backoff + strategy. + + Incorporating full jitter into your backoff strategy can greatly reduce the likelihood + of creating accidental denial of service (DoS) conditions against your own systems when + many clients are recovering from a failure state. + """ + None: "No jitter." + } + } + } retry_max_duration_secs: { description: "The maximum amount of time to wait between retries." required: false