RaftNodeConfig

Struct RaftNodeConfig 

Source
pub struct RaftNodeConfig {
    pub cluster: ClusterConfig,
    pub network: NetworkConfig,
    pub raft: RaftConfig,
    pub retry: RetryPolicies,
    pub tls: TlsConfig,
}
Expand description

Main configuration container for Raft consensus engine components

Combines all subsystem configurations with hierarchical override support:

  1. Default values from code implementation
  2. Configuration file specified by CONFIG_PATH
  3. Environment variables (highest priority)

Fields§

§cluster: ClusterConfig

Cluster topology and node configuration

§network: NetworkConfig

Network communication parameters

§raft: RaftConfig

Core Raft algorithm parameters

§retry: RetryPolicies

Retry policies for distributed operations

§tls: TlsConfig

TLS/SSL security configuration

Implementations§

Source§

impl RaftNodeConfig

Source

pub fn new() -> Result<Self>

Loads configuration from hierarchical sources without validation.

Configuration sources are merged in the following order (later sources override earlier):

  1. Type defaults (lowest priority)
  2. Configuration file from CONFIG_PATH environment variable (if set)
  3. Environment variables with RAFT__ prefix (highest priority)
§Note

This method does NOT validate the configuration. Validation is deferred to allow further overrides via with_override_config(). Callers MUST call validate() before using the configuration.

§Returns

Merged configuration instance or error if config file parsing fails.

§Examples
// Load with default values only
let cfg = RaftNodeConfig::new()?.validate()?;

// Load with config file and environment variables
std::env::set_var("CONFIG_PATH", "config/cluster.toml");
std::env::set_var("RAFT__CLUSTER__NODE_ID", "100");
let cfg = RaftNodeConfig::new()?.validate()?;

// Apply runtime overrides
let cfg = RaftNodeConfig::new()?
    .with_override_config("custom.toml")?
    .validate()?;
Source

pub fn with_override_config(&self, path: &str) -> Result<Self>

Applies additional configuration overrides from file without validation.

Merging order (later sources override earlier):

  1. Current configuration values
  2. New configuration file
  3. Latest environment variables (highest priority)
§Note

This method does NOT validate the configuration. Callers MUST call validate() after all overrides are applied.

§Example
let cfg = RaftNodeConfig::new()?
    .with_override_config("runtime_overrides.toml")?
    .validate()?;
Source

pub fn validate(self) -> Result<Self>

Validates configuration and returns validated instance.

Consumes self and performs validation of all subsystems. Must be called after all configuration overrides to ensure the final config is valid.

§Returns

Validated configuration or error if validation fails.

§Errors

Returns validation errors from any subsystem:

  • Invalid port bindings
  • Conflicting node IDs
  • Expired certificates
  • Invalid directory paths
§Example
let config = RaftNodeConfig::new()?
    .with_override_config("app.toml")?
    .validate()?; // Validation happens here
Source

pub fn is_learner(&self) -> bool

Checks if this node is configured as a learner (not a voter)

A learner node has role=Learner. Only learners can join via JoinCluster RPC. Voters have role=Follower/Candidate/Leader and are added via config change (AddNode).

Note: Status (Promotable/ReadOnly/Active) is separate from role. This method checks role only.

Trait Implementations§

Source§

impl Clone for RaftNodeConfig

Source§

fn clone(&self) -> RaftNodeConfig

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 RaftNodeConfig

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for RaftNodeConfig

Source§

fn default() -> RaftNodeConfig

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for RaftNodeConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for RaftNodeConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. 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> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
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
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,