Struct raftstore::store::util::RegionReadProgress[][src]

pub struct RegionReadProgress {
    core: Mutex<RegionReadProgressCore>,
    safe_ts: AtomicU64,
}

RegionReadProgress is used to keep track of the replica’s safe_ts, the replica can handle a read request directly without requiring leader lease or read index iff safe_ts >= read_ts (the read_ts is usually stale i.e seconds ago).

safe_ts is updated by the (apply index, safe ts) item:

if self.applied_index >= item.apply_index {
    self.safe_ts = max(self.safe_ts, item.safe_ts)
}

For the leader, the (apply index, safe ts) item is publish by the resolved-ts worker periodically. For the followers, the item is sync periodically from the leader through the CheckLeader rpc.

The intend is to make the item’s safe ts larger (more up to date) and apply index smaller (require less data)

Fields

core: Mutex<RegionReadProgressCore>safe_ts: AtomicU64

Implementations

impl RegionReadProgress[src]

pub fn new(applied_index: u64, cap: usize) -> RegionReadProgress[src]

pub fn update_applied(&self, applied: u64)[src]

pub fn update_safe_ts(&self, apply_index: u64, ts: u64)[src]

pub fn clear(&self)[src]

pub fn read_state(&self) -> ReadState[src]

pub fn safe_ts(&self) -> u64[src]

Trait Implementations

impl Debug for RegionReadProgress[src]

impl Default for RegionReadProgress[src]

Auto Trait Implementations

impl RefUnwindSafe for RegionReadProgress

impl Send for RegionReadProgress

impl Sync for RegionReadProgress

impl Unpin for RegionReadProgress

impl UnwindSafe for RegionReadProgress

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]