pub enum GooseCoordinatedOmissionMitigation {
Average,
Maximum,
Minimum,
Disabled,
}
Expand description
THIS IS AN EXPERIMENTAL FEATURE, DISABLED BY DEFAULT. Optionally mitigate the loss of data (coordinated omission) due to stalls on the upstream server.
Stalling can happen for many reasons, for example: garbage collection, a cache stampede,
even unrelated load on the same server. Without any mitigation, Goose loses
statistically relevant information as GooseUser
threads are unable to make additional requests while they are blocked by an upstream stall.
Goose mitigates this by backfilling the requests that would have been made during that time.
Backfilled requests show up in the --request-file
if enabled, though they were not actually
sent to the server.
Goose can be configured to backfill requests based on the expected
user_cadence
. The expected
cadence can be automatically calculated with any of the following configuration options.
Variants§
Average
Backfill based on the average
user_cadence
for this
GooseUser
.
Maximum
Backfill based on the maximum
user_cadence
for this
GooseUser
.
Minimum
Backfill based on the minimum
user_cadence
for this
GooseUser
.
Disabled
Completely disable coordinated omission mitigation (default).
Trait Implementations§
Source§impl Clone for GooseCoordinatedOmissionMitigation
impl Clone for GooseCoordinatedOmissionMitigation
Source§fn clone(&self) -> GooseCoordinatedOmissionMitigation
fn clone(&self) -> GooseCoordinatedOmissionMitigation
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<'de> Deserialize<'de> for GooseCoordinatedOmissionMitigation
impl<'de> Deserialize<'de> for GooseCoordinatedOmissionMitigation
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 FromStr for GooseCoordinatedOmissionMitigation
Allow --co-mitigation
from the command line using text variations on supported
GooseCoordinatedOmissionMitigation
s by implementing FromStr
.
impl FromStr for GooseCoordinatedOmissionMitigation
Allow --co-mitigation
from the command line using text variations on supported
GooseCoordinatedOmissionMitigation
s by implementing FromStr
.
Source§impl GooseDefaultType<GooseCoordinatedOmissionMitigation> for GooseAttack
impl GooseDefaultType<GooseCoordinatedOmissionMitigation> for GooseAttack
Source§fn set_default(
self,
key: GooseDefault,
value: GooseCoordinatedOmissionMitigation,
) -> Result<Box<Self>, GooseError>
fn set_default( self, key: GooseDefault, value: GooseCoordinatedOmissionMitigation, ) -> Result<Box<Self>, GooseError>
Sets GooseDefault
to a GooseCoordinatedOmissionMitigation
value.
Source§impl PartialEq for GooseCoordinatedOmissionMitigation
impl PartialEq for GooseCoordinatedOmissionMitigation
Source§fn eq(&self, other: &GooseCoordinatedOmissionMitigation) -> bool
fn eq(&self, other: &GooseCoordinatedOmissionMitigation) -> bool
self
and other
values to be equal, and is used by ==
.impl Eq for GooseCoordinatedOmissionMitigation
impl StructuralPartialEq for GooseCoordinatedOmissionMitigation
Auto Trait Implementations§
impl Freeze for GooseCoordinatedOmissionMitigation
impl RefUnwindSafe for GooseCoordinatedOmissionMitigation
impl Send for GooseCoordinatedOmissionMitigation
impl Sync for GooseCoordinatedOmissionMitigation
impl Unpin for GooseCoordinatedOmissionMitigation
impl UnwindSafe for GooseCoordinatedOmissionMitigation
Blanket Implementations§
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,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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