Struct raftstore::store::util::RegionReadProgress [−][src]
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]
fn default() -> 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]
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,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<V, W> ConvertFrom<W> for V where
W: ConvertTo<V>,
[src]
W: ConvertTo<V>,
pub fn convert_from(ctx: &mut EvalContext, from: W) -> Result<V, Error>
[src]
impl<T> From<T> for T
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Pointable for T
[src]
pub const ALIGN: usize
[src]
type Init = T
The type for initializers.
pub unsafe fn init(init: <T as Pointable>::Init) -> usize
[src]
pub unsafe fn deref<'a>(ptr: usize) -> &'a T
[src]
pub unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T
[src]
pub unsafe fn drop(ptr: usize)
[src]
impl<T> Pointable for T
[src]
pub const ALIGN: usize
[src]
type Init = T
The type for initializers.
pub unsafe fn init(init: <T as Pointable>::Init) -> usize
[src]
pub unsafe fn deref<'a>(ptr: usize) -> &'a T
[src]
pub unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T
[src]
pub unsafe fn drop(ptr: usize)
[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>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
[src]
V: MultiLane<T>,