Skip to main content

SyncupAction

Enum SyncupAction 

Source
pub enum SyncupAction {
    RolledBack {
        matchpoint_vlsn: u64,
        start_vlsn: u64,
    },
    NeedsRestore,
}
Expand description

A replicated database environment.

This is the entry point for replication. It wraps a standard Environment and adds replication capabilities including master election, replica streaming, and commit acknowledgments.

High Availability (HA) provides a replicated, embedded database management system which provides fast, reliable, and scalable data management. HA enables replication of an environment across a Replication Group. A ReplicatedEnvironment is a single node in the replication group.

ReplicatedEnvironment wraps a standard Environment. All database operations are executed in the same fashion in both replicated and non-replicated applications. A ReplicatedEnvironment must be transactional. All replicated databases created in the replicated environment must be transactional as well.

A ReplicatedEnvironment joins its replication group when it is created. When new() returns, the node will have established contact with the other members of the group and will be ready to service operations.

Replicated environments can be created with node type Electable or Secondary. Electable nodes can be masters or replicas, and participate in both master elections and commit durability decisions. Secondary nodes can only be replicas, not masters, and do not participate in either elections or durability decisions.

§Example

use noxu_rep::{ReplicatedEnvironment, RepConfig};

let config = RepConfig::builder("my_group", "node1", "localhost")
    .node_port(5001)
    .build();
let rep_env = ReplicatedEnvironment::new(config).unwrap();

Outcome of ReplicatedEnvironment::syncup_with_feeder — the action taken by a live diverged-tail syncup. Port of the branch in JE ReplicaFeederSyncup.execute between a soft rollback and a network restore.

Variants§

§

RolledBack

The divergent tail was rolled back to the matchpoint; resume streaming from start_vlsn (matchpoint + 1). matchpoint_vlsn == last VLSN means the replica was not diverged and nothing was truncated.

Fields

§matchpoint_vlsn: u64
§start_vlsn: u64
§

NeedsRestore

No safe rollback (no common matchpoint, or it would cross a committed txn); the replica must do a full network restore.

Trait Implementations§

Source§

impl Clone for SyncupAction

Source§

fn clone(&self) -> SyncupAction

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SyncupAction

Source§

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

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

impl Eq for SyncupAction

Source§

impl PartialEq for SyncupAction

Source§

fn eq(&self, other: &SyncupAction) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for SyncupAction

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
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