Skip to main content

MetricsBuilder

Struct MetricsBuilder 

Source
pub struct MetricsBuilder {
Show 51 fields m_id: UInt32Builder, m_name: DictColumn, m_description: StringBuilder, m_unit: DictColumn, m_kind: UInt8Builder, m_temporality: UInt8Builder, m_monotonic: BooleanBuilder, m_resource_id: UInt16Builder, m_scope_id: UInt16Builder, metric_attrs: AttrsBuilder, next_metric_id: u32, num: DpHead, num_int: Int64Builder, num_double: Float64Builder, hist: DpHead, hist_stats: Stats, hist_counts: ListBuilder<UInt64Builder>, hist_bounds_id: UInt32Builder, bounds_index: HashMap<Vec<u64>, u32>, bounds_id: UInt32Builder, bounds_values: ListBuilder<Float64Builder>, next_bounds_id: u32, exp: DpHead, exp_stats: Stats, exp_scale: Int32Builder, exp_zero_count: UInt64Builder, exp_zero_threshold: Float64Builder, exp_pos_offset: Int32Builder, exp_pos_counts: ListBuilder<UInt64Builder>, exp_neg_offset: Int32Builder, exp_neg_counts: ListBuilder<UInt64Builder>, summ: DpHead, summ_count: UInt64Builder, summ_sum: Float64Builder, summ_quantile: ListBuilder<Float64Builder>, summ_value: ListBuilder<Float64Builder>, dp_attrs: AttrsBuilder, next_dp_id: u32, ex_id: UInt32Builder, ex_parent: UInt32Builder, ex_time: TimestampNanosecondBuilder, ex_int: Int64Builder, ex_double: Float64Builder, ex_trace_id: FixedSizeBinaryBuilder, ex_span_id: FixedSizeBinaryBuilder, exemplar_attrs: AttrsBuilder, next_exemplar_id: u32, rs: ResourceScope, list_values: usize, min_ts: i64, max_ts: i64,
}

Fields§

§m_id: UInt32Builder§m_name: DictColumn§m_description: StringBuilder§m_unit: DictColumn§m_kind: UInt8Builder§m_temporality: UInt8Builder§m_monotonic: BooleanBuilder§m_resource_id: UInt16Builder§m_scope_id: UInt16Builder§metric_attrs: AttrsBuilder§next_metric_id: u32§num: DpHead§num_int: Int64Builder§num_double: Float64Builder§hist: DpHead§hist_stats: Stats§hist_counts: ListBuilder<UInt64Builder>§hist_bounds_id: UInt32Builder§bounds_index: HashMap<Vec<u64>, u32>

explicit_bounds interned by their bit patterns. f64 has no Hash and -0.0 == 0.0 while their bits differ, so the key is the raw bits: two bound arrays share a row only if they are byte-identical, which is the conservative direction (a missed intern costs space, a wrong one would mislabel every bucket).

§bounds_id: UInt32Builder§bounds_values: ListBuilder<Float64Builder>§next_bounds_id: u32§exp: DpHead§exp_stats: Stats§exp_scale: Int32Builder§exp_zero_count: UInt64Builder§exp_zero_threshold: Float64Builder§exp_pos_offset: Int32Builder§exp_pos_counts: ListBuilder<UInt64Builder>§exp_neg_offset: Int32Builder§exp_neg_counts: ListBuilder<UInt64Builder>§summ: DpHead§summ_count: UInt64Builder§summ_sum: Float64Builder§summ_quantile: ListBuilder<Float64Builder>§summ_value: ListBuilder<Float64Builder>§dp_attrs: AttrsBuilder§next_dp_id: u32

One counter across all four point tables — see the module header.

§ex_id: UInt32Builder§ex_parent: UInt32Builder§ex_time: TimestampNanosecondBuilder§ex_int: Int64Builder§ex_double: Float64Builder§ex_trace_id: FixedSizeBinaryBuilder§ex_span_id: FixedSizeBinaryBuilder§exemplar_attrs: AttrsBuilder§next_exemplar_id: u32§rs: ResourceScope§list_values: usize

List elements written so far, for approx_bytes. Tracked rather than measured because ListBuilder::values needs &mut self.

§min_ts: i64§max_ts: i64

Implementations§

Source§

impl MetricsBuilder

Source

pub fn new() -> Self

Source

pub fn num_rows(&self) -> usize

Data points, across all four tables. This is the row count the flusher reports and the number that matters — descriptors are a rounding error.

Source

pub fn is_empty(&self) -> bool

Source

pub fn approx_bytes(&self) -> usize

Source

pub fn has_headroom_for(&self, req: &ExportMetricsServiceRequest) -> bool

Source

pub fn append_request( &mut self, req: &ExportMetricsServiceRequest, ) -> Result<usize>

Source

fn append_metric(&mut self, m: &Metric, rid: u16, sid: u16) -> Result<usize>

Source

fn next_point(&mut self, time: u64) -> u32

Claim the next point id and fold its timestamp into the block’s range.

Only time_unix_nano widens the range. See crate::schema::NUMBER_DP for why start_time_unix_nano must not.

Source

fn append_number(&mut self, p: &NumberDataPoint, mid: u32) -> Result<()>

Source

fn append_hist(&mut self, p: &HistogramDataPoint, mid: u32) -> Result<()>

Source

fn append_exp_hist( &mut self, p: &ExponentialHistogramDataPoint, mid: u32, ) -> Result<()>

Source

fn append_summary(&mut self, p: &SummaryDataPoint, mid: u32) -> Result<()>

Source

fn append_exemplars(&mut self, dp_id: u32, exemplars: &[Exemplar]) -> Result<()>

Source

pub fn finish(&mut self) -> Result<Sealed>

Seal and reset, including on the error path — see SignalBuilder::finish.

Source

fn seal(&self, sidecars: Sidecars) -> Result<Sealed>

Trait Implementations§

Source§

impl Default for MetricsBuilder

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl SignalBuilder for MetricsBuilder

Source§

const SIGNAL: &'static str = "metrics"

Directory component under the data dir. Also the block name prefix, so changing it is an on-disk format change.
Source§

type Request = ExportMetricsServiceRequest

The decoded OTLP export request this signal accepts.
Source§

fn has_headroom_for(&self, req: &Self::Request) -> bool

Whether req is guaranteed to fit without overflowing a UInt16 dictionary or id space. Read more
Source§

fn append_request(&mut self, req: &Self::Request) -> Result<usize>

Absorb one export request, returning the number of root-table rows added.
Source§

fn approx_bytes(&self) -> usize

Rough resident cost, with variable-width heaps measured rather than estimated from row counts — a 32 KB GenAI prompt must not weigh the same as a 20-byte one.
Source§

fn is_empty(&self) -> bool

Source§

fn finish(&mut self) -> Result<Sealed>

Seal and reset. After this returns, self is a fresh builder — including on the error path, where the caller has no way to know how far through the column-by-column finish it got.
Source§

fn snapshot(&self) -> Result<Sealed>

Materialise the rows accumulated so far without resetting, for Open. Sidecar-free; see Sealed::with. Read more

Auto Trait Implementations§

Blanket Implementations§

§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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.

§

impl<T> IntoRequest<T> for T

§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<L> LayerExt<L> for L

§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in [Layered].
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.
§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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