Struct raftstore::store::worker::read::LocalReader [−][src]
Fields
store_id: Cell<Option<u64>>
store_meta: Arc<Mutex<StoreMeta>>
kv_engine: E
metrics: ReadMetrics
delegates: LruCache<u64, Arc<ReadDelegate>>
snap_cache: Option<Arc<E::Snapshot>>
cache_read_id: ThreadReadId
router: C
Implementations
impl<C, E> LocalReader<C, E> where
C: ProposalRouter<E::Snapshot>,
E: KvEngine,
[src]
C: ProposalRouter<E::Snapshot>,
E: KvEngine,
pub fn new(kv_engine: E, store_meta: Arc<Mutex<StoreMeta>>, router: C) -> Self
[src]
fn redirect(&mut self, cmd: RaftCommand<E::Snapshot>)
[src]
fn get_delegate(&mut self, region_id: u64) -> Option<Arc<ReadDelegate>>
[src]
fn pre_propose_raft_command(
&mut self,
req: &RaftCmdRequest
) -> Result<Option<(Arc<ReadDelegate>, RequestPolicy)>>
[src]
&mut self,
req: &RaftCmdRequest
) -> Result<Option<(Arc<ReadDelegate>, RequestPolicy)>>
pub fn propose_raft_command(
&mut self,
read_id: Option<ThreadReadId>,
req: RaftCmdRequest,
cb: Callback<E::Snapshot>
)
[src]
&mut self,
read_id: Option<ThreadReadId>,
req: RaftCmdRequest,
cb: Callback<E::Snapshot>
)
pub fn read(
&mut self,
read_id: Option<ThreadReadId>,
req: RaftCmdRequest,
cb: Callback<E::Snapshot>
)
[src]
&mut self,
read_id: Option<ThreadReadId>,
req: RaftCmdRequest,
cb: Callback<E::Snapshot>
)
If read requests are received at the same RPC request, we can create one snapshot for all of them and check whether the time when the snapshot was created is in lease. We use ThreadReadId to figure out whether this RaftCommand comes from the same RPC request with the last RaftCommand which left a snapshot cached in LocalReader. ThreadReadId is composed by thread_id and a thread_local incremental sequence.
pub fn release_snapshot_cache(&mut self)
[src]
Trait Implementations
impl<C, E> Clone for LocalReader<C, E> where
C: ProposalRouter<E::Snapshot> + Clone,
E: KvEngine,
[src]
C: ProposalRouter<E::Snapshot> + Clone,
E: KvEngine,
fn clone(&self) -> Self
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<C, E> ReadExecutor<E> for LocalReader<C, E> where
C: ProposalRouter<E::Snapshot>,
E: KvEngine,
[src]
C: ProposalRouter<E::Snapshot>,
E: KvEngine,
fn get_engine(&self) -> &E
[src]
fn get_snapshot(
&mut self,
create_time: Option<ThreadReadId>
) -> Arc<E::Snapshot>
[src]
&mut self,
create_time: Option<ThreadReadId>
) -> Arc<E::Snapshot>
fn get_value(&self, req: &Request, region: &Region) -> Result<Response>
[src]
fn execute(
&mut self,
msg: &RaftCmdRequest,
region: &Arc<Region>,
read_index: Option<u64>,
ts: Option<ThreadReadId>
) -> ReadResponse<E::Snapshot>
[src]
&mut self,
msg: &RaftCmdRequest,
region: &Arc<Region>,
read_index: Option<u64>,
ts: Option<ThreadReadId>
) -> ReadResponse<E::Snapshot>
Auto Trait Implementations
impl<C, E> !RefUnwindSafe for LocalReader<C, E>
impl<C, E> Send for LocalReader<C, E> where
C: Send,
C: Send,
impl<C, E> !Sync for LocalReader<C, E>
impl<C, E> Unpin for LocalReader<C, E> where
C: Unpin,
C: Unpin,
impl<C, E> UnwindSafe for LocalReader<C, E> where
C: UnwindSafe,
E: UnwindSafe,
<E as KvEngine>::Snapshot: RefUnwindSafe,
C: UnwindSafe,
E: UnwindSafe,
<E as KvEngine>::Snapshot: RefUnwindSafe,
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> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
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>,