pub struct PersistReadWorker<T: Timestamp + Lattice + Codec64> {
    tx: UnboundedSender<(Span, PersistReadWorkerCmd<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, PersistReadWorkerCmd<T>)>

Implementations§

source§

impl<T: Timestamp + Lattice + Codec64> PersistReadWorker<T>

source

pub(crate) fn new() -> Self

source

pub(crate) fn register( &self, id: GlobalId, since_handle: SinceHandle<SourceData, (), T, Diff, PersistEpoch> )

source

pub(crate) fn update( &self, id: GlobalId, since_handle: SinceHandle<SourceData, (), T, Diff, PersistEpoch> )

Update the existing since handle associated with id to since_handle.

Note that this should only be called when updating a since handle; to initially associate an id to a since handle, use Self::register.

Panics
  • If id is not currently associated with any since handle.
source

pub(crate) fn downgrade(&self, frontiers: BTreeMap<GlobalId, Antichain<T>>)

source

pub(crate) async fn snapshot_stats( &self, id: GlobalId, as_of: Antichain<T> ) -> Result<SnapshotStats<T>, StorageError>

source

fn send(&self, cmd: PersistReadWorkerCmd<T>)

Trait Implementations§

source§

impl<T: Debug + Timestamp + Lattice + Codec64> Debug for PersistReadWorker<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FutureExt for T

source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<T> Pointable for T

source§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<P, R> ProtoType<R> for Pwhere R: RustType<P>,

source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more