pub enum ServerError {
Show 19 variants
ConfigLoad {
message: String,
},
ConfigValidation {
message: String,
},
ListenerBind {
address: SocketAddr,
source: Error,
},
ListenerAccept {
message: String,
},
ParticipantIncarnation {
phase: &'static str,
message: String,
},
ServerIncarnationExhausted,
ParticipantStartupRestore {
message: String,
},
ConnectionIncarnationExhausted {
attempted_server_incarnation: u64,
},
UnsupportedOperation {
operation: String,
profile: &'static str,
},
PushReplyDisconnected {
correlation_id: u64,
},
PushReplyTimeout {
correlation_id: u64,
},
PushReplyExpired {
correlation_id: u64,
},
ClusterJoin {
message: String,
},
ClusterSync {
message: String,
},
ShutdownTimeout {
message: String,
},
ShutdownFlush {
message: String,
},
HealthEndpoint {
message: String,
},
ConnectionLimitReached {
limit: usize,
},
ConnectionCapReached {
operation: String,
cap: &'static str,
limit: usize,
},
}Expand description
Error taxonomy for standalone liminal server deployment failures.
Variants§
ConfigLoad
The configuration file could not be read or parsed.
ConfigValidation
The configuration file was read but failed semantic validation.
ListenerBind
The server could not bind its configured listener address.
Fields
address: SocketAddrAddress the server attempted to bind.
ListenerAccept
The server listener failed while accepting an inbound connection.
ParticipantIncarnation
Durable participant-incarnation startup or allocation failed before its result could be published.
Fields
ServerIncarnationExhausted
The durable server-incarnation namespace has no successor.
ParticipantStartupRestore
Production participant startup restore failed: the durable conversation streams could not be scanned or replayed, so the server-scope capacity ledger cannot be made exact and the server refuses to start over state it cannot account for.
ConnectionIncarnationExhausted
The current durable server incarnation has no collision-free connection ordinal left, so the accepted socket was not admitted.
Fields
UnsupportedOperation
A frame requested an operation the configured services profile does not serve (e.g. ordinary publish/subscribe/conversation traffic against the capability-scoped worker front door). Server-internal taxonomy, not wire vocabulary: the connection process renders it as the operation’s existing typed error frame with this error’s text as the message.
Fields
PushReplyDisconnected
A server→client push reply slot was dropped before a correlated reply
arrived — the connection closed (the prompt worker-death signal). Distinct
from Self::PushReplyTimeout so consumers can tell a worker that DIED
(fast failover) from one that is merely SLOW, by type rather than message.
PushReplyTimeout
A server→client push reply did not arrive within the awaiter’s timeout —
the worker is still connected but did not reply in this wait quantum. This
is BENIGN: the reply slot survives untouched and the caller may re-arm
PushReplyAwaiter::receive
indefinitely. It is not a worker-death signal.
PushReplyExpired
A server→client push carrying an explicit reply deadline (via
push_to_connection_with_deadline)
reached that deadline before a correlated reply arrived. Unlike
Self::PushReplyTimeout this is TERMINAL: the reply slot has been
removed and its §5 max_pending_pushes_per_connection cap admission
released. Returned PROMPTLY once the deadline is due — a receive call
does not hold a due expiry until its caller’s quantum ends, so the
terminal outcome is independent of how the caller polls. Distinct
variant so callers classify by type, not message.
ClusterJoin
The server could not join the configured beamr distribution cluster.
ClusterSync
Cluster state propagation through beamr distribution failed.
ShutdownTimeout
Graceful shutdown did not drain within the configured timeout.
ShutdownFlush
Durable state could not be flushed during graceful shutdown.
HealthEndpoint
The health endpoint failed to start or serve requests.
ConnectionLimitReached
A new connection was refused because the configured max_connections
cap (§5) is already reached. The listener drops the freshly accepted
stream, refusing the connection, rather than admitting an unbounded fleet.
ConnectionCapReached
An admission-time per-connection cap (§5) refused an operation: too many subscriptions, conversations, in-flight pushes, or pending conversation replies on one connection. The connection process renders it as the operation’s existing typed error frame with this text as the message.
Trait Implementations§
Source§impl Debug for ServerError
impl Debug for ServerError
Source§impl Display for ServerError
impl Display for ServerError
Source§impl Error for ServerError
impl Error for ServerError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()