Skip to main content

Module vnode

Module vnode 

Source
Expand description

VnodeRegistry — runtime-configurable virtual node topology.

Replaces the compile-time VNODE_COUNT constant that previously lived in laminar-storage. A registry owns:

  • the current vnode count (configurable; 256 by default),
  • the node-per-vnode assignment (for distributed modes),
  • a monotonically increasing assignment_version used by ObjectStoreBackend to fence out stale writers.

Vnode assignment is derived from the row’s primary key via key_hash (xxh3) and modulo vnode_count. Connectors that need a vnode ID for an event call VnodeRegistry::vnode_for_key.

Structs§

ArchivedNodeId
An archived NodeId
Locality
A node’s failure-domain locality: ordered tier values, coarsest first (e.g. ["us-east-1", "us-east-1a", "r17"]). Parsed from the node’s failure_domain gossip string.
NodeId
Unique identifier for a node. Also the owner id for vnodes; cluster membership and vnode ownership identify the same thing.
NodeIdResolver
The resolver for an archived NodeId
VnodeRegistry
Runtime registry of vnode topology and assignment.

Enums§

VnodeLifecycleState
Per-vnode lifecycle state. Distinct from ownership: a vnode this node owns can still be Restoring while its committed state is being rehydrated from durable storage after a rebalance.

Functions§

key_hash
Hash a key to a 64-bit value. Used to derive vnode IDs and for any other keyed-partitioning decisions.
owned_vnodes
Vnodes currently assigned to owner.
owners_per_domain
Owner counts per failure domain at isolation_tier. The largest value over vnode_count is the blast radius — the share of state that goes Restoring if that one domain fails at once.
peer_owners
Distinct assigned nodes other than self_id, sorted by id — the peer set a node fans checkpoint barriers and shuffle data out to.
rendezvous_assignment
Build a vnode-to-owner assignment using Rendezvous Hashing (Highest Random Weight).