Enum mz_storage::controller::ReadPolicy
source · [−]pub enum ReadPolicy<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
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
sourceimpl ReadPolicy<Timestamp>
impl ReadPolicy<Timestamp>
sourcepub fn lag_writes_by(lag: Timestamp) -> Self
pub fn lag_writes_by(lag: Timestamp) -> Self
Creates a read policy that lags the write frontier by the indicated amount, rounded down to a multiple of that amount.
The rounding down is done to reduce the number of changes the capability undergoes, with the thinking
being that if you are ok with lag
, then getting something between lag
and 2 x lag
should be ok.
sourceimpl<T: Timestamp> ReadPolicy<T>
impl<T: Timestamp> ReadPolicy<T>
pub fn frontier(&self, write_frontier: AntichainRef<'_, T>) -> Antichain<T>
Trait Implementations
sourceimpl<T: Clone> Clone for ReadPolicy<T>
impl<T: Clone> Clone for ReadPolicy<T>
sourcefn clone(&self) -> ReadPolicy<T>
fn clone(&self) -> ReadPolicy<T>
1.0.0 · sourcefn 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
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
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>
T
in a tonic::Request
sourceimpl<T> Pointable for T
impl<T> Pointable for T
sourceimpl<T> ProgressEventTimestamp for Twhere
T: Data + Debug + Any,
impl<T> ProgressEventTimestamp for Twhere
T: Data + Debug + Any,
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>
RustType::from_proto
.sourcefn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
RustType::into_proto
.