Skip to main content

JournalEventQueue

Struct JournalEventQueue 

Source
pub struct JournalEventQueue { /* private fields */ }
Expand description

Thread-safe unified journal event queue

Buffers all event types in memory and provides FIFO access. When the buffer is full, only SSE-only telemetry can be evicted. Correctness events are rejected if no telemetry slot can be reclaimed.

Implementations§

Source§

impl JournalEventQueue

Source

pub fn new(config: JournalQueueConfig) -> Self

Create a new journal event queue with specified configuration

Source

pub fn push(&self, event: JournalEventMessage) -> Result<(), String>

Push an event to the queue

If the queue is at capacity, the oldest SSE-only event is dropped. A correctness event is never evicted: if the queue contains only correctness events, a new correctness event is rejected and new telemetry is dropped.

Source

pub fn pop(&self) -> Option<JournalEventMessage>

Pop the next event from the queue (FIFO)

Source

pub fn push_front(&self, event: JournalEventMessage) -> Result<(), String>

Re-queue an event at the front (used when send fails)

Source

pub fn drain_batch(&self, max: usize) -> Vec<JournalEventMessage>

Drain up to N events from the queue for batch sending

Source

pub fn peek_batch_run_ids(&self, max: usize) -> Vec<String>

Return the distinct run IDs represented by the next max live events. The background sender uses this to acquire ordering barriers before it removes those events from the queue.

Source

pub fn hold_run(&self, run_id: &str)

Keep run_id’s queued events out of the periodic flush until release_run or an explicit per-run drain.

Source

pub fn release_run(&self, run_id: &str) -> bool

Return the run to normal periodic flushing. Returns whether it was held.

Source

pub fn is_held(&self, run_id: &str) -> bool

Source

pub fn drain_batch_for_runs( &self, max: usize, allowed_run_ids: &HashSet<String>, ) -> Vec<JournalEventMessage>

Drain up to max events belonging to runs whose ordering barriers are already held. Events from other runs retain their relative FIFO order.

Source

pub fn drain_all(&self) -> Vec<JournalEventMessage>

Drain all events from the queue

Source

pub fn drain_run_events(&self, run_id: &str) -> Vec<JournalEventMessage>

Drain all events for a specific run_id from the queue. Events for other runs remain in the queue (order preserved).

Source

pub fn len(&self) -> usize

Get current queue length

Source

pub fn is_empty(&self) -> bool

Check if queue is empty

Source

pub fn contains_run(&self, run_id: &str) -> bool

Whether this queue still contains an event for run_id.

Pull completion uses this while holding the run’s flush barrier: an empty result then means no flush for that run is queued or in flight.

Source

pub fn record_sent(&self, is_sse_only: bool)

Record a successful event send (for metrics)

Source

pub fn record_sent_batch(&self, count: usize, sse_only_count: usize)

Record batch of successful sends

Source

pub fn record_error(&self)

Record an event send error (for metrics)

Source

pub fn metrics(&self) -> JournalQueueMetrics

Get current metrics snapshot

Source

pub fn get_metrics(&self) -> (u64, u64, u64, u64)

Get current metrics as tuple (queued, sent, dropped, errors)

Source

pub fn oldest_age(&self) -> Option<Duration>

Get age of oldest event in queue

Source

pub fn batch_size(&self) -> usize

Get the configured batch size

Source

pub fn flush_interval_ms(&self) -> u64

Get the configured flush interval in milliseconds

Trait Implementations§

Source§

impl Clone for JournalEventQueue

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

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

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> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self> ⓘ

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

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

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

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

impl<L> LayerExt<L> for L

Source§

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

impl<L> LayerExt<L> for L

Source§

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

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + 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: Sized + 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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 = !

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

fn try_from(value: U) -> Result<T, !>

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