Struct mz_storage::controller::persist_read_handles::PersistWorker
source · [−]pub struct PersistWorker<T: Timestamp + Lattice + Codec64> {
tx: UnboundedSender<(Span, PersistWorkerCmd<T>)>,
}
Expand description
A wrapper that holds on to backing persist shards/collections that the storage controller is aware of. The handles hold back the since frontier and we need to downgrade them when the read capabilities change.
Internally, this has an async task and the methods for registering a handle and downgrading sinces add commands to a queue that this task is working off. This makes the methods non-blocking and moves the work outside the main coordinator task, meaning the coordinator is spending less time waiting on persist calls.
Fields
tx: UnboundedSender<(Span, PersistWorkerCmd<T>)>
Implementations
sourceimpl<T: Timestamp + Lattice + Codec64> PersistWorker<T>
impl<T: Timestamp + Lattice + Codec64> PersistWorker<T>
pub(crate) fn new() -> Self
pub(crate) fn register(
&self,
id: GlobalId,
read_handle: ReadHandle<SourceData, (), T, Diff>
)
pub(crate) fn downgrade(&self, frontiers: BTreeMap<GlobalId, Antichain<T>>)
pub(crate) fn snapshot(
&self,
id: GlobalId,
since: Antichain<T>
) -> Receiver<Result<Vec<(Row, Diff)>, StorageError>>
fn send(&self, cmd: PersistWorkerCmd<T>)
Trait Implementations
Auto Trait Implementations
impl<T> !RefUnwindSafe for PersistWorker<T>
impl<T> Send for PersistWorker<T>
impl<T> Sync for PersistWorker<T>
impl<T> Unpin for PersistWorker<T>
impl<T> !UnwindSafe for PersistWorker<T>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> FutureExt for T
impl<T> FutureExt for T
sourcefn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
sourcefn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
sourcefn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a tonic::Request
sourceimpl<T> Pointable for T
impl<T> Pointable for T
sourceimpl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
sourcefn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
See
RustType::from_proto
.sourcefn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
See
RustType::into_proto
.