ContextSourceConfig

Struct ContextSourceConfig 

Source
pub struct ContextSourceConfig {
    pub datagram_byte_limit: usize,
    pub metric_contexts: usize,
    pub event_contexts: usize,
    pub service_check_contexts: usize,
}
Expand description

The per-kind caps a timeline’s shared context pool fills to before it recurs existing contexts. first_sample_config samples this beside datadog.yaml so cardinality varies per timeline. Each cap is drawn against the budget the earlier draws left, so a kind’s cardinality still varies at random while the three together stay under MAX_CONTEXTS_TOTAL.

Fields§

§datagram_byte_limit: usize

Bytes a rendered line of any pooled context must fit, this timeline’s real datagram budget rather than the protocol ceiling. Mint builds identities against it, so every served context has a rendering the driver can pack. Defaults to the sampled datagram_byte_limit, which is the smaller of the SUT’s receive buffer and DATAGRAM_BYTE_LIMIT.

§metric_contexts: usize

Distinct metric contexts the pool holds before it recurs the ones it has.

Sampled in 2..=MAX_CONTEXTS_TOTAL minus what the other kinds took. A larger cap explores more identities and puts fewer points in each, and costs memory: the pool retains every context it mints for the life of the run. Two is the floor because the pool holds one context carrying an invalid UTF-8 byte per kind alongside the rest, and a kind capped at one could hold only one of the two.

§event_contexts: usize

Distinct event contexts the pool holds. Same range and trade as Self::metric_contexts.

§service_check_contexts: usize

Distinct service-check contexts the pool holds. Same range and trade as Self::metric_contexts.

Implementations§

Source§

impl ContextSourceConfig

Source

pub fn sample<R: Rng + ?Sized>(rng: &mut R, datagram_byte_limit: usize) -> Self

Sample the per-kind caps, each boundary-biased log-uniform against the budget still free.

The draws run in order and each spends from one shared ceiling, so the total is bounded by construction rather than by scaling three independent draws afterwards. Every kind keeps at least two contexts, one of which carries an invalid UTF-8 byte.

Source

pub fn to_yaml(&self) -> Result<String>

Render self as a context_source.yaml string.

§Errors

Returns an error if serialization fails.

Source

pub fn read(config_dir: &Path) -> Result<Self>

Read the context-source config from the context_source.yaml that first_sample_config wrote to config_dir.

§Errors

Returns an error if the config is unreadable, is not valid YAML, or caps a kind below two. The pool seeds every kind with one context carrying an invalid UTF-8 byte and one without, so a cap of one cannot hold both and the pool would exceed its own cap assertion. Self::sample never draws below two, and this rejects a config that reached the pool by another route rather than letting it redden a run.

Trait Implementations§

Source§

impl Clone for ContextSourceConfig

Source§

fn clone(&self) -> ContextSourceConfig

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ContextSourceConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for ContextSourceConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for ContextSourceConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Copy for ContextSourceConfig

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ServiceExt for T

Source§

fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>
where Self: Sized,

Apply a transformation to the response body. Read more
Source§

fn decompression(self) -> Decompression<Self>
where Self: Sized,

Decompress response bodies. Read more
Source§

fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>
where Self: Sized,

High level tracing that classifies responses using HTTP status codes. Read more
Source§

fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>
where Self: Sized,

High level tracing that classifies responses using gRPC headers. Read more
Source§

fn follow_redirects(self) -> FollowRedirect<Self>
where Self: Sized,

Follow redirect resposes using the Standard policy. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,