HealthCheck

Struct HealthCheck 

Source
pub struct HealthCheck {
Show 15 fields pub state: EngineState, pub ready: bool, pub memory_pressure: f64, pub backpressure_level: BackpressureLevel, pub accepting_writes: bool, pub l1_items: usize, pub l1_bytes: usize, pub filter_items: usize, pub filter_trust: FilterTrust, pub redis_connected: Option<bool>, pub redis_latency_ms: Option<u64>, pub sql_connected: Option<bool>, pub sql_latency_ms: Option<u64>, pub wal_pending_items: Option<u64>, pub healthy: bool,
}
Expand description

Comprehensive health status of the sync engine.

This struct provides all the information needed for:

  • /ready endpoint: Just check healthy field
  • /health endpoint: Full diagnostics with data sources documented
  • Metrics dashboards: Memory pressure, cache stats, backend latencies

§Data Sources

Each field documents where its value comes from:

  • Live probe: Fresh check performed during health_check() call
  • Cached: From internal state, no I/O required
  • Derived: Computed from other fields

§Example

let health = engine.health_check().await;
if health.healthy {
    // Ready for traffic
} else {
    // Log diagnostics
    eprintln!("Engine unhealthy: state={:?}, redis={}, sql={}",
        health.state, health.redis_connected, health.sql_connected);
}

Fields§

§state: EngineState

Current engine lifecycle state. Source: Cached from state_tx watch channel.

§ready: bool

Whether the engine is in Running state and ready for traffic. Source: Derived from state == Running.

§memory_pressure: f64

Current memory pressure ratio (0.0 to 1.0). Source: Cached from l1_size_bytes / config.l1_max_bytes.

§backpressure_level: BackpressureLevel

Current backpressure level based on thresholds. Source: Derived from memory_pressure vs config thresholds.

§accepting_writes: bool

Whether the engine is accepting write operations. Source: Derived from backpressure_level != Critical.

§l1_items: usize

Number of items in L1 cache. Source: Cached from l1_cache.len().

§l1_bytes: usize

Total bytes in L1 cache. Source: Cached from l1_size_bytes atomic.

§filter_items: usize

Number of items tracked in L3 cuckoo filter. Source: Cached from l3_filter.len().

§filter_trust: FilterTrust

Cuckoo filter trust status. Source: Cached from l3_filter.trust().

§redis_connected: Option<bool>

Whether Redis (L2) responded to PING. Source: Live probe - redis::cmd("PING"). None if Redis is not configured.

§redis_latency_ms: Option<u64>

Redis PING latency in milliseconds. Source: Live probe - timed PING command. None if Redis is not configured or PING failed.

§sql_connected: Option<bool>

Whether SQL (L3) responded to SELECT 1. Source: Live probe - sqlx::query("SELECT 1"). None if SQL is not configured.

§sql_latency_ms: Option<u64>

SQL SELECT 1 latency in milliseconds. Source: Live probe - timed query. None if SQL is not configured or query failed.

§wal_pending_items: Option<u64>

Number of items pending in WAL (awaiting drain to SQL). Source: Cached from l3_wal.stats().pending_items. None if WAL is not configured.

§healthy: bool

Overall health verdict for load balancer decisions. Source: Derived from:

  • state == Running
  • redis_connected != Some(false) (connected or not configured)
  • sql_connected != Some(false) (connected or not configured)
  • backpressure_level != Critical

Trait Implementations§

Source§

impl Clone for HealthCheck

Source§

fn clone(&self) -> HealthCheck

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 HealthCheck

Source§

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

Formats the value using the given formatter. 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<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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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 = 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