Struct raftstore::store::StoreGroup [−][src]
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: String
version: u64
dirty: 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][−]
&mut self,
store_id: u64,
labels: Vec<StoreLabel>
) -> Option<u64>
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][+]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<V, W> ConvertFrom<W> for V where
W: ConvertTo<V>,
[src][+]
W: ConvertTo<V>,
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][+]
U: From<T>,
impl<T> Pointable for T
[src][+]
impl<T> Pointable for T
[src][+]
impl<T> Same<T> for T
[src]
type Output = T
Should always be Self
impl<T> Sealed<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> SendSyncUnwindSafe for T where
T: Send + Sync + UnwindSafe + ?Sized,
[src]
T: Send + Sync + UnwindSafe + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src][+]
U: Into<T>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
[src][+]
V: MultiLane<T>,