Struct raftstore::store::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,
impl<C, E> ReadExecutor<E> for LocalReader<C, E> where
C: ProposalRouter<E::Snapshot>,
E: KvEngine,
[src][+]
C: ProposalRouter<E::Snapshot>,
E: KvEngine,
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,
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> ToOwned for T where
T: Clone,
[src][+]
T: Clone,
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>,