Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Error catalogue

Reference · generated · every public error type in the workspace, variant by variant, with the meaning its documentation states

The table is read from the source, so a variant that exists is listed and a variant that is gone disappears. The troubleshooting guide gives remedies for the errors a user meets from the command line.

ConflationError in dev_ring/dev-stages

Defined in dev_ring/dev-stages/src/conflation/mod.rs.

VariantMeaning
SaturatedMore keys than ring slots. Nothing in this module raises it; a [KeyExtractor] that enforces the bound may.
PayloadTooShortPayload is shorter than the configured key-extraction range.
PayloadTooLargeThe payload is longer than [MAX_LOGICAL_PAYLOAD].
SourceThe [Source] behind a drainer has failed for good; its own error is carried as the cause.

BasketError in mesh/mesh-basket

Defined in mesh/mesh-basket/src/lib.rs.

VariantMeaning
SqliteThe SQLite engine failed.
IoCreating the basket file’s directory failed.
InvalidQueryThe [QuerySpec] is invalid: a time-bucket aggregate of zero seconds.
PoisonedA thread panicked holding the connection; surface the error rather than retry on this Basket.

DevError in mesh/mesh-client

Defined in mesh/mesh-client/src/error.rs.

VariantMeaning
NoDaemonPMS_DAEMON names neither a unix:// path nor a ws:// or wss:// URL.
ForeignDaemonThe socket at the default path, /tmp/pms.sock, is served by another user. Anyone may create that path before the daemon does, and a client connected to it would hand that user everything it sends, so the client does not use it.
VersionMismatchThe protocol version the daemon speaks is not supported by this client.
TransportThe client could not connect, or start its runtime or threads.
TlsThe TLS handshake of a wss:// endpoint failed: the daemon’s certificate chains to none of the roots the client trusts (webpki-roots’ and those given with MeshOptions::with_tls_root_pem) or does not name the host, the daemon does not speak TLS, or a root given is not a PEM certificate. Nothing was sent.
ProtocolA request could not be serialized, or the WebSocket handshake did not accept the port subprotocol.
DaemonThe daemon returned an error op: in reply to a request, or unprompted just before it closed the connection (limit_exceeded at its connection cap, payload_too_large after a frame over its limit), which every call still waiting and Mesh::wait then report. Every code but auth_failed, which is [DevError::AuthFailed].
AuthFailedThe daemon refused the attach with auth_failed and closed the connection: it allows only the keys it lists and this key is not one, or it requires a key (MeshOptions::with_identity) and the attach carried none, or the proof did not verify, or it came too late. Mesh::wait and every call still waiting report it too.
KeyFileA key file could not be made, read or used (MeshOptions::with_identity_file, identity): it cannot be opened, its group or others may read or write it, or it holds no key. path is empty when no random bytes could be had for a new key.
NotAttachedCalled before attach succeeded.
DisconnectedDuringRpcThe call got no answer: the connection had already ended when it was made, or ended without answering it.
TimeoutThe daemon did not answer within MeshOptions::rpc_timeout, and the call was cancelled (see Mesh::late_replies).
QueueFullThe call was refused, having sent nothing, because the client’s queue toward the daemon stayed full until its deadline (see client::COMMAND_QUEUE): the daemon reads more slowly than calls are made, or has stopped. The call may be retried.
ReentrantCallA blocking call was made on a thread in an async runtime’s context (a task’s, or a spawn_blocking or block_in_place closure’s), where blocking would deadlock or panic. Call from a plain std::thread, or from a subscription callback, which runs on one.
DisconnectedThe connection ended, not by a detach the daemon acknowledged and with no error from the daemon: it closed the connection, or a write failed. Mesh::wait and every call still waiting report it.
SilentThe daemon sent nothing for MeshOptions::silence_limit while the client waited for it, and the client closed the connection; Mesh::wait and every call still waiting report it. A stopped daemon or host looks like this.
MeshDroppedA WeakMesh was upgraded after every Mesh of its connection had been dropped, which closed the connection. Nothing was sent.

AttachKeysError in mesh/mesh-hub

Defined in mesh/mesh-hub/src/attach_keys.rs.

VariantMeaning
ReadThe file could not be read, or is not UTF-8.
LineA line is neither blank, a comment, nor a key.

DaemonError in mesh/mesh-hub

Defined in mesh/mesh-hub/src/daemon.rs.

VariantMeaning
SignalsA signal handler could not be installed; signal names it.
UdsThe Unix socket could not be claimed or served: another daemon holds the path, or the socket could not be bound.
WsThe WebSocket address could not be bound or served.
MetricsThe metrics address could not be bound or served.
HubThe hub could not be created; the string is the bridge’s reason.
BasketThe basket file could not be opened.
StoreRefusedThe envelope store asked for could not be made (the runtime logged why), and the daemon will not run without it: attached processes would receive nothing.
LinksThe links to other daemons could not be started: their configuration was refused, their address could not be bound, or a thread could not start.

EmbedError in mesh/mesh-hub

Defined in mesh/mesh-hub/src/embed.rs.

VariantMeaning
RuntimeThe async runtime could not be built, or the thread that watches the hub’s name for another owner could not be started.
HubThe hub itself could not be created; the string is the bridge’s reason.
BindThe listener could not bind, with the address it was asked for.
NowhereNo bind was given, so there would have been nowhere to answer.
LinksThe links to other daemons could not be started: their configuration was refused, their address could not be bound, or a thread could not start.

BridgeError in mesh/mesh-hub

Defined in mesh/mesh-hub/src/hub_bridge.rs.

VariantMeaning
InitThe hub could not be created; the message is the runtime’s reason (see [HubBridge::new]).
DispatchThe hub’s schema registry refused a send’s envelope; the message is the underlying error.
TooLongA send’s channel or type name longer than [MAX_CHANNEL_LEN], or a filter string longer than [MAX_PATTERN_LEN]; nothing was published or subscribed, and the daemon answers bad_request.
UnknownDestinationA send’s destination is no node attached here, and none a linked peer announced; nothing was delivered, and the daemon answers unknown_destination.

AnnounceError in mesh/mesh-hub

Defined in mesh/mesh-hub/src/link/announce.rs.

VariantMeaning
LengthThe bytes are not the 47 of an announcement.
MagicThe bytes do not start with [ANNOUNCE_MAGIC].
VersionA version this build does not read.
PortThe announced port is zero.
DaemonIdThe daemon id is not the fingerprint of the announced key.

LinkPeerError in mesh/mesh-hub

Defined in mesh/mesh-hub/src/link/mod.rs.

VariantMeaning
NoKeyThe text has no = between an address and a key.
AddressWhat comes before the = is not an IP address and port.
KeyWhat comes after the = is not 64 hex digits.

LinkSetupError in mesh/mesh-hub

Defined in mesh/mesh-hub/src/link/mod.rs.

VariantMeaning
NoPeersThe configuration names no peer.
OwnKeyA peer has this daemon’s own key.
OwnPeerKeyA peer named by its key alone has this daemon’s own key.
PeerKeysWithoutAnnouncePeers are named by their key alone, and nothing announces where they are.
AnnounceGroupThe announcement group is not an IPv4 multicast address, or its port is zero.
AnnounceTtlThe announcements’ TTL is not 1 to 255.
AnnounceBindLAN announcement is asked for links bound to an IPv6 address, which an IPv4 announcement cannot give.
AnnounceThe announcement group could not be joined, or its sender set up.
DuplicatePeerTwo peers have one key, or keys with one daemon id.
TrustedRelayNotPeerA key trusted as a relay is not a configured peer’s.
DuplicateAddressTwo peers have one address.
TimingThe heartbeat interval is zero, or not shorter than the silence limit, so a link that works would be taken down.
BindThe link address could not be bound, or its socket set up.
ThreadA link thread could not be started.

DatagramError in mesh/mesh-hub

Defined in mesh/mesh-hub/src/link/wire.rs.

VariantMeaning
EnvelopeThe frame’s bytes are not a canonical envelope with its own id in the form a link writes: type 0, a zero origin and time, no flags and a raw payload.
PulseThe frame’s Pulse does not name the envelope it carries, or names another daemon than the peer it came from.
KindThe envelope’s type name is neither link type.
ControlA control message that does not decode.
ForwardA forward whose layout is not this build’s.
HelloA Hello that is not a link Hello.
TooLargeWhat would be sent is longer than a run of fragments carries.

WsTlsError in mesh/mesh-hub

Defined in mesh/mesh-hub/src/tls.rs.

VariantMeaning
ReadA PEM file could not be read.
CertificatesThe certificate chain holds no certificate, or is not PEM.
KeyThe private key’s PEM holds no key, or is not PEM.
Refusedrustls refused the certificate and key: the key is not one it can sign with, or not the certificate’s.

HubError in mesh/mesh-hub-runtime

Defined in mesh/mesh-hub-runtime/src/lib.rs.

VariantMeaning
TemporalViolationA published pulse was not later than the last one accepted, the SIG-T05 invariant: clock skew or a replay. Nothing was written.
SchemaThe schema registry refused the envelope.
ReadOnlyThis hub did not create its ring, whose one writer is its creator; nothing was written. Publish by sending to the daemon instead.

OwnerError in mesh/mesh-hub-runtime

Defined in mesh/mesh-hub-runtime/src/lib.rs.

VariantMeaning
OwnedA live hub owns the name; nothing was removed or created.
LockThe name’s lock file could not be taken for a reason other than a live owner (see [LockError]); nothing was removed or created.
RingThe hub name is invalid, or the hub’s ring could not be removed or created.

LockError in mesh/mesh-hub-runtime

Defined in mesh/mesh-hub-runtime/src/owner.rs.

VariantMeaning
HeldA live process holds the lock: the hub name or the socket path has an owner, and nothing it guards was touched.
IoThe lock file could not be opened, locked or checked: the operating system’s error, such as EACCES for a directory this user cannot write.
NotPlainThe lock path names something other than a plain file with one name, such as a symbolic link or a hard-linked file, which could redirect the holder’s writes.
DisplacedThe lock file was removed while its holder lived, and its ownership check ([OwnerLock::set_ownership_check]) says another owner has taken what it guards: the holder is displaced, and leaves the path to the next owner.

Defined in mesh/mesh-link/src/codec.rs.

VariantMeaning
TooLargeA message, or a field in one, is longer than its cap.
TruncatedThe bytes end inside the field that starts at at, or before the entries a count there declares.
TrailingBytesBytes follow the end of the message.
UnknownVersionThe encoding’s version is not one this build reads.
UnknownKindA control message’s kind is not one this build knows.
UnknownFlagsAn interest summary sets flag bits this build does not know.
UnknownStateA health notice’s state code is not one this build knows.
BadPartAn announcement’s part is not below its count of parts, or the count is 0 or above 64 (MAX_ANNOUNCE_PARTS).
NotUtf8A text field that starts at at is not UTF-8.
NotCanonicalThe bytes are well formed but not in the one form the encoding allows for their value, such as a set out of order; the reason says which rule they break.

Defined in mesh/mesh-link/src/link.rs.

VariantMeaning
ClosedThe link is closed, here or at the peer.
EncodeA control message could not be encoded, as one past its cap cannot.
DecodeThe peer sent bytes that are not a control message.
EnvelopeTooLargeThe envelope is longer than the link carries.

Defined in mesh/mesh-link/src/origin.rs.

VariantMeaning
NameTooLongThe name is longer than a daemon admits at attach.
NoDaemonThe text has no @ between a name and a daemon.
BadDaemonThe daemon is not 16 lowercase hex digits.

Defined in mesh/mesh-link/src/router.rs.

VariantMeaning
UnknownPeerThe daemon is not linked to this peer.
LocalDaemonA daemon is not its own peer.
ForeignNodeA peer announced as its own a node another daemon qualifies.
ViaNodeA peer announced as reached through it a node of its own, or of this daemon.
BadPartA part of an announcement outside its parts, or whose count of parts is not its generation’s.

ProofError in mesh/mesh-port-protocol

Defined in mesh/mesh-port-protocol/src/attach.rs.

VariantMeaning
TextThe field’s text is not the padded standard base64 of as many bytes as the field holds.
KeyThe public key is not an Ed25519 point, or is one of small order.
SignatureThe signature is not the key’s over the challenge, the name and the connection, or is not in its canonical form.

TextError in mesh/mesh-port-protocol

Defined in mesh/mesh-port-protocol/src/attach.rs.

VariantMeaning
Base64Not padded standard base64.
LengthBase64 of the wrong number of bytes.

Base64Error in mesh/mesh-port-protocol

Defined in mesh/mesh-port-protocol/src/base64.rs.

VariantMeaning
LengthThe length is not a multiple of four.
InvalidByteA byte outside the standard alphabet, whitespace and the URL-safe - and _ included.
PaddingA = other than the one or two that end the text.
TrailingBitsThe symbol before the padding sets bits that carry no data, which no encoder writes.

FrameError in mesh/mesh-port-protocol

Defined in mesh/mesh-port-protocol/src/framing.rs.

VariantMeaning
OversizedA frame longer than the decoder’s maximum, or a payload longer than a prefix can declare.

ErrorCode in mesh/mesh-port-protocol

Defined in mesh/mesh-port-protocol/src/lib.rs.

VariantMeaning
VersionUnsupportedThe client announced a protocol version this daemon does not speak.
NotAttachedThe operation needs an attached connection.
NameInUseAnother attached connection already holds that name.
BadFilterThe subscribe filter could not be understood.
UnknownSubscriptionThe subscription id is unknown or belongs to another connection.
PayloadTooLargeThe payload exceeds what the daemon accepts.
LimitExceededA limit of the daemon’s connection policy was reached; the message names the limit and the flag that sets it. A Unix-socket connection past the connection cap gets it unprompted, without an id, and is closed.
BadRequestThe message is not a valid request: malformed JSON, a field missing or malformed, or a string longer than its cap.
InternalThe daemon failed internally; the message carries detail.
AuthFailedA key-proof attach failed ([attach]): the proof did not verify, the key is not one the daemon allows, a prove came with no challenge pending or another request while one was, the challenge went unanswered past the daemon’s handshake timeout, or the daemon requires a key and the attach carried none. The daemon closes the connection after it.
UnknownDestinationA send’s to names no node this daemon can deliver to: none of its own attached clients, and none a linked peer daemon announced. The message names the node; nothing was delivered.

SchemaError in mesh/mesh-schema

Defined in mesh/mesh-schema/src/lib.rs.

VariantMeaning
TypeIdExistsA schema with this type_id is already registered.
NameExistsA schema with this name is already registered.
UnknownTypeNo schema is registered under this type_id.
ProducerNotAllowedThe producing node is not on the schema’s producer ACL.
ValidationFailedThe payload failed the schema’s [ValidationMode]; carries the reason.

TelemetryExportError in tools/pms-telemetry-export

Defined in tools/pms-telemetry-export/src/lib.rs.

VariantMeaning
EncodeFailed to render the metrics buffer into Prometheus text format.
RegisterOne of the canonical metrics failed to register against the Prometheus Registry — typically a duplicate-name collision when multiple Metrics instances share a registry.