Struct raftstore::store::replication_mode::StoreGroup[][src]

pub struct StoreGroup {
    labels: HashMap<u64, Vec<StoreLabel>>,
    label_ids: HashMap<String, u64>,
    stores: HashMap<u64, u64>,
    label_key: String,
    version: u64,
    dirty: bool,
}

A registry that maps store to a group.

A group ID is generated according to the label value. Stores with same label value will be mapped to the same group ID.

Fields

labels: HashMap<u64, Vec<StoreLabel>>label_ids: HashMap<String, u64>stores: HashMap<u64, u64>label_key: Stringversion: u64dirty: bool

Implementations

impl StoreGroup[src]

pub fn backup_store_labels(&mut self, store: &mut Store)[src]

Backs store labels.

When using majority mode, labels still need to be backup for future usage. Should only call it in majority mode.

pub fn register_store(
    &mut self,
    store_id: u64,
    labels: Vec<StoreLabel>
) -> Option<u64>
[src]

Registers the store with given label value.

Panics

Panics if the store is registered twice with different store ID.

pub fn group_id(&self, version: u64, store_id: u64) -> Option<u64>[src]

Gets the group ID of store.

Different version may indicates different label key. If version is less than recorded one, then label key has to be changed, new value can’t be mixed with old values, so None is returned. If version is larger, then label key must still matches. Because recalculate is called before updating regions’ replication status, so unchanged recorded version means unchanged label key.

fn recalculate(&mut self, status: &ReplicationStatus)[src]

Clears id caches and recalculates if necessary.

If label key is not changed, the function is no-op.

Trait Implementations

impl Debug for StoreGroup[src]

impl Default for StoreGroup[src]

Auto Trait Implementations

impl RefUnwindSafe for StoreGroup

impl Send for StoreGroup

impl Sync for StoreGroup

impl Unpin for StoreGroup

impl UnwindSafe for StoreGroup

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<V, W> ConvertFrom<W> for V where
    W: ConvertTo<V>, 
[src]

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Pointable for T[src]

type Init = T

The type for initializers.

impl<T> Pointable for T[src]

type Init = T

The type for initializers.

impl<T> Same<T> for T[src]

type Output = T

Should always be Self

impl<T> Sealed<T> for T where
    T: ?Sized
[src]

impl<T> SendSyncUnwindSafe for T where
    T: Send + Sync + UnwindSafe + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 
[src]