Enum mz_storage_client::controller::ReadPolicy
source · pub enum ReadPolicy<T> {
NoPolicy {
initial_since: Antichain<T>,
},
ValidFrom(Antichain<T>),
LagWriteFrontier(Arc<dyn Fn(AntichainRef<'_, T>) -> Antichain<T> + Send + Sync>),
Multiple(Vec<ReadPolicy<T>>),
}
Expand description
Compaction policies for collections maintained by Controller
.
NOTE(benesch): this might want to live somewhere besides the storage crate, because it is fundamental to both storage and compute.
Variants§
NoPolicy
No-one has yet requested a ReadPolicy
from us, which means that we can
still change the implied_capability/the collection since if we need
to.
ValidFrom(Antichain<T>)
Maintain the collection as valid from this frontier onward.
LagWriteFrontier(Arc<dyn Fn(AntichainRef<'_, T>) -> Antichain<T> + Send + Sync>)
Maintain the collection as valid from a function of the write frontier.
This function will only be re-evaluated when the write frontier changes.
If the intended behavior is to change in response to external signals,
consider using the ValidFrom
variant to manually pilot compaction.
The Arc
makes the function cloneable.
Multiple(Vec<ReadPolicy<T>>)
Allows one to express multiple read policies, taking the least of the resulting frontiers.
Implementations§
source§impl<T> ReadPolicy<T>where
T: Timestamp + TimestampManipulation,
impl<T> ReadPolicy<T>where
T: Timestamp + TimestampManipulation,
source§impl ReadPolicy<Timestamp>
impl ReadPolicy<Timestamp>
sourcepub fn lag_writes_by(lag: Timestamp, max_granularity: Timestamp) -> Self
pub fn lag_writes_by(lag: Timestamp, max_granularity: Timestamp) -> Self
Creates a read policy that lags the write frontier by the indicated amount, rounded down to (at most) the specified value. The rounding down is done to reduce the number of changes the capability undergoes.
source§impl<T: Timestamp> ReadPolicy<T>
impl<T: Timestamp> ReadPolicy<T>
pub fn frontier(&self, write_frontier: AntichainRef<'_, T>) -> Antichain<T>
Trait Implementations§
source§impl<T: Clone> Clone for ReadPolicy<T>
impl<T: Clone> Clone for ReadPolicy<T>
source§fn clone(&self) -> ReadPolicy<T>
fn clone(&self) -> ReadPolicy<T>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl<T> !RefUnwindSafe for ReadPolicy<T>
impl<T> Send for ReadPolicy<T>where
T: Send,
impl<T> Sync for ReadPolicy<T>where
T: Sync,
impl<T> Unpin for ReadPolicy<T>where
T: Unpin,
impl<T> !UnwindSafe for ReadPolicy<T>
Blanket Implementations§
source§impl<T> FutureExt for T
impl<T> FutureExt for T
source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
source§fn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
RustType::from_proto
.source§fn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
RustType::into_proto
.