pub struct AdminState {Show 17 fields
pub node_health: RwLock<HashMap<String, NodeHealth>>,
pub metrics: RwLock<ServerMetricsSnapshot>,
pub active_sessions: RwLock<u64>,
pub config_snapshot: RwLock<ConfigSnapshot>,
pub proxy_config: RwLock<Option<ProxyConfig>>,
pub pool_manager: RwLock<Option<Arc<ConnectionPoolManager>>>,
pub circuit_breaker: RwLock<Option<Arc<CircuitBreakerManager>>>,
pub replay_engine: RwLock<Option<Arc<ReplayEngine>>>,
pub plugin_manager: RwLock<Option<Arc<PluginManager>>>,
pub chaos_overrides: RwLock<HashMap<String, ChaosOverride>>,
pub anomaly_detector: RwLock<Option<Arc<AnomalyDetector>>>,
pub analytics: RwLock<Option<Arc<QueryAnalytics>>>,
pub edge_cache: RwLock<Option<Arc<EdgeCache>>>,
pub edge_registry: RwLock<Option<Arc<EdgeRegistry>>>,
pub auth_token: RwLock<Option<String>>,
pub migration: RwLock<Option<MigrationInfo>>,
pub branch: RwLock<Option<BranchConfig>>,
/* private fields */
}Expand description
Shared admin state
Fields§
§node_health: RwLock<HashMap<String, NodeHealth>>Node health status
metrics: RwLock<ServerMetricsSnapshot>Server metrics
active_sessions: RwLock<u64>Active sessions count
config_snapshot: RwLock<ConfigSnapshot>Configuration (read-only)
proxy_config: RwLock<Option<ProxyConfig>>Full proxy config (for SQL routing)
pool_manager: RwLock<Option<Arc<ConnectionPoolManager>>>Connection pool manager (Session/Transaction/Statement modes).
Attached at startup; /api/pools returns real per-node pool
stats when present, an empty list otherwise.
circuit_breaker: RwLock<Option<Arc<CircuitBreakerManager>>>Circuit-breaker manager. Attached at startup; /api/circuit reports
each node’s live circuit state (closed / open / half-open).
replay_engine: RwLock<Option<Arc<ReplayEngine>>>Time-travel replay engine. Optional so test fixtures don’t have
to wire a backend template; production startup attaches it via
with_replay_engine. Endpoint returns 503 when missing.
plugin_manager: RwLock<Option<Arc<PluginManager>>>WASM plugin manager. None when the proxy started without
plugins (or with a different feature set). /plugins
endpoint returns 503 when missing; UI panel says “no plugin
manager attached”.
chaos_overrides: RwLock<HashMap<String, ChaosOverride>>Chaos-mode overrides: per-node-address marker that the chaos
system (POST /api/chaos) has forced this node to a particular
state. Lets the UI distinguish “operationally disabled” from
“chaos-injected fault” and lets Reset restore everything.
anomaly_detector: RwLock<Option<Arc<AnomalyDetector>>>Anomaly detector — same Arc the server populates from the query path. /api/anomalies polls this for the recent-events ring buffer.
analytics: RwLock<Option<Arc<QueryAnalytics>>>Query-analytics engine — same Arc the server records on from the query
path. /api/analytics reads top queries + slow-query log from it.
edge_cache: RwLock<Option<Arc<EdgeCache>>>Edge proxy cache + registry. Cache surfaces stats; registry is the home-side fanout for invalidations.
edge_registry: RwLock<Option<Arc<EdgeRegistry>>>§auth_token: RwLock<Option<String>>Bearer token required on admin requests (except liveness probes).
None = open. Set once at startup from config.admin_token.
migration: RwLock<Option<MigrationInfo>>Traffic-mirror / migration info for /api/migration/status. Some
when [mirror] enabled.
branch: RwLock<Option<BranchConfig>>Branch-database config for /api/branch. Some when [branch] enabled.
Implementations§
Source§impl AdminState
impl AdminState
Sourcepub async fn with_auth_token(&self, token: Option<String>)
pub async fn with_auth_token(&self, token: Option<String>)
Set the admin Bearer token (wired by the server at startup).
Sourcepub async fn with_migration(&self, info: MigrationInfo)
pub async fn with_migration(&self, info: MigrationInfo)
Attach traffic-mirror info so /api/migration/status can report it.
Sourcepub async fn with_branch(&self, cfg: BranchConfig)
pub async fn with_branch(&self, cfg: BranchConfig)
Attach branch-database config so /api/branch can provision.
Sourcepub async fn with_pool_manager(&self, manager: Arc<ConnectionPoolManager>)
pub async fn with_pool_manager(&self, manager: Arc<ConnectionPoolManager>)
Attach the connection pool manager so /api/pools reports real
per-node pool statistics. Wired by the server at startup.
Sourcepub async fn with_circuit_breaker(&self, manager: Arc<CircuitBreakerManager>)
pub async fn with_circuit_breaker(&self, manager: Arc<CircuitBreakerManager>)
Attach the circuit-breaker manager so /api/circuit reports live
per-node circuit state. Wired by the server at startup.
Sourcepub async fn with_anomaly_detector(&self, detector: Arc<AnomalyDetector>)
pub async fn with_anomaly_detector(&self, detector: Arc<AnomalyDetector>)
Attach an anomaly detector. Mirror of with_replay_engine / with_plugin_manager — wired by the server at startup.
Sourcepub async fn with_analytics(&self, analytics: Arc<QueryAnalytics>)
pub async fn with_analytics(&self, analytics: Arc<QueryAnalytics>)
Attach the query-analytics engine so /api/analytics can read it.
Sourcepub async fn with_edge(
&self,
cache: Arc<EdgeCache>,
registry: Arc<EdgeRegistry>,
)
pub async fn with_edge( &self, cache: Arc<EdgeCache>, registry: Arc<EdgeRegistry>, )
Attach edge cache + registry. Server calls this once at startup; both Arcs are the same instances ServerState holds.
Sourcepub async fn with_replay_engine(&self, engine: Arc<ReplayEngine>)
pub async fn with_replay_engine(&self, engine: Arc<ReplayEngine>)
Attach a time-travel replay engine. Production startup calls
this once with a ReplayEngine constructed from the proxy’s
shared TransactionJournal + a BackendConfig template; the
/api/replay endpoint returns 503 until this is set.
Sourcepub async fn with_plugin_manager(&self, manager: Arc<PluginManager>)
pub async fn with_plugin_manager(&self, manager: Arc<PluginManager>)
Attach a WASM plugin manager. Production startup calls this
once with the same Arc held by ProxyServer; the /plugins
endpoint returns 503 until set.
Sourcepub async fn set_proxy_config(&self, config: ProxyConfig)
pub async fn set_proxy_config(&self, config: ProxyConfig)
Set the proxy configuration for SQL routing
Sourcepub async fn register_command<F>(&self, name: &str, handler: F)
pub async fn register_command<F>(&self, name: &str, handler: F)
Register a command handler
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for AdminState
impl !RefUnwindSafe for AdminState
impl !UnwindSafe for AdminState
impl Send for AdminState
impl Sync for AdminState
impl Unpin for AdminState
impl UnsafeUnpin for AdminState
Blanket Implementations§
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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