pub struct EngineMetrics {Show 51 fields
pub events_ingested: IntCounter,
pub events_emitted: IntCounter,
pub events_dropped: IntCounter,
pub cycles: IntCounter,
pub batches: IntCounter,
pub queries_compiled: IntCounter,
pub queries_cached_plan: IntCounter,
pub cycles_backpressured: IntCounter,
pub mv_updates: IntCounter,
pub mv_bytes_stored: IntGauge,
pub pipeline_watermark: IntGauge,
pub source_watermark_ms: IntGaugeVec,
pub source_idle: IntGaugeVec,
pub stream_watermark_ms: IntGaugeVec,
pub input_buf_bytes: IntGaugeVec,
pub shed_records_total: IntCounterVec,
pub checkpoints_completed: IntCounter,
pub checkpoints_failed: IntCounter,
pub checkpoint_epoch: IntGauge,
pub checkpoint_size_bytes: IntGauge,
pub sink_write_failures: IntCounter,
pub sink_write_timeouts: IntCounter,
pub sink_task_channel_closed: IntCounter,
pub sink_filter_rejected_rows: IntCounterVec,
pub window_late_dropped: IntCounter,
pub events_null_timestamp: IntCounter,
pub temporal_filter_buffered: IntGauge,
pub temporal_filter_inserts: IntCounter,
pub temporal_filter_retracts: IntCounter,
pub temporal_filter_dropped: IntCounter,
pub cycle_duration: Histogram,
pub checkpoint_duration: Histogram,
pub checkpoint_pipeline_stall_duration: Histogram,
pub checkpoint_barrier_local_duration: Histogram,
pub checkpoint_aligned_resume_wait: Histogram,
pub checkpoint_restorable_gate_wait: Histogram,
pub checkpoint_unchanged_vnodes: IntCounter,
pub coordinated_committer_lag_epochs: IntGauge,
pub sink_precommit_duration: Histogram,
pub lookup_cache_hits: IntCounterVec,
pub lookup_cache_misses: IntCounterVec,
pub lookup_source_errors: IntCounterVec,
pub lookup_in_flight_rows: IntGaugeVec,
pub placement_vnodes_per_domain: IntGaugeVec,
pub placement_blast_radius_ratio: Gauge,
pub pipeline_faults_total: IntCounter,
pub pipeline_cycle_errors_total: IntCounter,
pub pipeline_restarts_total: IntCounter,
pub coordinated_recoveries_total: IntCounter,
pub coordinated_recovery_failures_total: IntCounter,
pub shuffle_delivery_loss_incidents_total: IntCounter,
}Expand description
Pipeline metrics registered on an explicit prometheus Registry.
Constructed once at startup, Arc-shared into PipelineCallback,
CheckpointCoordinator, and OperatorGraph.
Fields§
§events_ingested: IntCounterEvents ingested from sources.
events_emitted: IntCounterEvents emitted to streams.
events_dropped: IntCounterEvents dropped.
cycles: IntCounterProcessing cycles completed.
batches: IntCounterBatches processed.
queries_compiled: IntCounterQueries using compiled PhysicalExpr.
queries_cached_plan: IntCounterQueries using cached logical plan.
cycles_backpressured: IntCounterCycles skipped by backpressure.
mv_updates: IntCounterMaterialized view updates.
mv_bytes_stored: IntGaugeApproximate MV bytes stored.
pipeline_watermark: IntGaugeGlobal pipeline watermark.
source_watermark_ms: IntGaugeVecPer-source watermark (epoch-ms). Label: source.
source_idle: IntGaugeVec1 if a source is idle (excluded from the watermark min), else
0. Label: source.
stream_watermark_ms: IntGaugeVecPer-stream watermark (epoch-ms). Label: stream.
input_buf_bytes: IntGaugeVecPer-stream input-port buffered bytes. Label: stream.
shed_records_total: IntCounterVecPer-stream rows shed by the ShedOldest policy. Label: stream.
checkpoints_completed: IntCounterCompleted checkpoints.
checkpoints_failed: IntCounterFailed checkpoints.
checkpoint_epoch: IntGaugeCurrent checkpoint epoch.
checkpoint_size_bytes: IntGaugeLast checkpoint size in bytes.
sink_write_failures: IntCounterSink write errors.
sink_write_timeouts: IntCounterSink write timeouts.
sink_task_channel_closed: IntCounterSink task channel closed.
sink_filter_rejected_rows: IntCounterVecRows dropped because the sink’s WHERE filter failed to compile to
a PhysicalExpr (fail-closed). Label: sink.
window_late_dropped: IntCounterRows dropped at operator level past allowed_lateness (distinct
from events_dropped, which is source-side).
events_null_timestamp: IntCounterSource rows dropped because the event-time column was null.
temporal_filter_buffered: IntGaugeRows currently buffered by temporal-filter operators.
temporal_filter_inserts: IntCounterZ-set inserts (+1) emitted by temporal-filter operators.
temporal_filter_retracts: IntCounterZ-set retractions (-1) emitted by temporal-filter operators.
temporal_filter_dropped: IntCounterLate / born-expired / beyond-horizon rows dropped un-emitted.
cycle_duration: HistogramPer-cycle processing duration.
checkpoint_duration: HistogramCheckpoint cycle duration.
checkpoint_pipeline_stall_duration: HistogramPipeline stall per barrier: sink write fence, shuffle alignment, state capture, and the Aligned resume gate. Exactly-once mode also includes its inline durable tail; other modes resume at Aligned while that tail remains supervised in the background.
checkpoint_barrier_local_duration: HistogramLocal barrier work while the pipeline is paused: sink fencing, shuffle alignment, state capture, and construction of the immutable durable-tail handoff.
checkpoint_aligned_resume_wait: HistogramCluster-shuffle pause after local capture while waiting for the global Aligned release. Embedded and single-node runtimes do not observe this metric.
checkpoint_restorable_gate_wait: HistogramTime the leader’s restorable gate spends polling for vnode partials (failed gates that burn the timeout are observed too). When this dominates restorable latency at production cadence, the push-driven upload-completion-ack follow-up is worth building.
checkpoint_unchanged_vnodes: IntCounterVnode partials written as references to an unchanged base instead of re-uploading state.
coordinated_committer_lag_epochs: IntGaugeSealed-but-not-yet-externally-committed epochs for coordinated sinks (designated-committer lag). Rising = the committer can’t keep up.
sink_precommit_duration: HistogramSink pre-commit round-trip (2PC phase 1).
lookup_cache_hits: IntCounterVecOn-demand lookup cache hits (served without a source fetch). Label: table.
lookup_cache_misses: IntCounterVecOn-demand lookup cache misses (not in cache). Label: table.
lookup_source_errors: IntCounterVecOn-demand lookup source fetch errors/timeouts. Label: table.
lookup_in_flight_rows: IntGaugeVecOn-demand lookup rows awaiting a source fetch. Label: table.
placement_vnodes_per_domain: IntGaugeVecVnodes owned per failure domain (cluster mode). Label: domain.
placement_blast_radius_ratio: GaugeLargest single domain’s share of all vnodes ([0, 1]) — the blast radius.
pipeline_faults_total: IntCounterUnexpected compute-thread exits (operator panics) that faulted the pipeline.
pipeline_cycle_errors_total: IntCounterFatal cycle errors dropped-and-continued under at-least-once delivery.
pipeline_restarts_total: IntCounterAutomatic recover-from-checkpoint restarts triggered by the fault supervisor.
coordinated_recoveries_total: IntCounterLeader-coordinated global restart-to-epoch rounds this node applied (cluster mode).
coordinated_recovery_failures_total: IntCounterLeader-coordinated recovery rounds abandoned (self-restore failed or restore quorum timed out).
shuffle_delivery_loss_incidents_total: IntCounterShuffle delivery-loss incidents; each one fences an epoch and forces replay.
Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for EngineMetrics
impl !UnwindSafe for EngineMetrics
impl Freeze for EngineMetrics
impl Send for EngineMetrics
impl Sync for EngineMetrics
impl Unpin for EngineMetrics
impl UnsafeUnpin for EngineMetrics
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
U: Sized,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
U: Sized,
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read more§impl<T> AsAny for T
impl<T> AsAny for T
§fn any_ref(&self) -> &(dyn Any + Send + Sync + 'static)
fn any_ref(&self) -> &(dyn Any + Send + Sync + 'static)
dyn Any reference to the object: Read more§fn as_any(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ
fn as_any(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ
Arc<dyn Any> reference to the object: Read more§fn into_any(self: Box<T>) -> Box<dyn Any + Send + Sync>
fn into_any(self: Box<T>) -> Box<dyn Any + Send + Sync>
Box<dyn Any>: Read more§fn type_name(&self) -> &'static str
fn type_name(&self) -> &'static str
std::any::type_name, since Any does not provide it and
Any::type_id is useless as a debugging aid (its Debug is just a mess of hex digits).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
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
T: AsAny + ?Sized,
impl<T> Downcast for Twhere
T: AsAny + ?Sized,
§fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
Any.§fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
Any.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
impl<T> MaybeSend for Twhere
T: Send,
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Pointee for T
impl<T> Pointee for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.