trait LimitProgress<T: Timestamp> {
// Required method
fn limit_progress(
&self,
handle: MzProbeHandle<T>,
slack_ms: u64,
limit: Option<usize>,
upper: Antichain<T>,
name: String,
) -> (Rc<dyn Any>, Self);
}Expand description
Extension trait for StreamCore to selectively limit progress.
Required Methods§
Sourcefn limit_progress(
&self,
handle: MzProbeHandle<T>,
slack_ms: u64,
limit: Option<usize>,
upper: Antichain<T>,
name: String,
) -> (Rc<dyn Any>, Self)
fn limit_progress( &self, handle: MzProbeHandle<T>, slack_ms: u64, limit: Option<usize>, upper: Antichain<T>, name: String, ) -> (Rc<dyn Any>, Self)
Limit the progress of the stream until its frontier reaches the given upper bound. Expects
the implementation to observe times in data, and release capabilities based on the probe’s
frontier, after applying slack to round up timestamps.
The implementation of this operator is subtle to avoid regressions in the rest of the
system. Specifically joins hold back compaction on the other side of the join, so we need to
make sure we release capabilities as soon as possible. This is why we only limit progress
for times before the upper, which is the time until which the source can distinguish
updates at the time of rendering. Once we make progress to the upper, we need to release
our capability.
This isn’t perfect, and can result in regressions if on of the inputs lags behind. We could consider using the join of the uppers, i.e, use lower bound upper of all available inputs.
Once the input frontier reaches [], the implementation must release any capability to
allow downstream operators to release resources.
The implementation should limit the number of pending times to limit if it is Some to
avoid unbounded memory usage.
handleis a probe installed on the dataflow’s outputs as late as possible, but before any timestamp rounding happens (c.f.,REFRESH EVERYmaterialized views).slack_msis the number of milliseconds to round up timestamps to.nameis a human-readable name for the operator.limitis the maximum number of pending times to keep around.upperis the upper bound of the stream’s frontier until which the implementation can retain a capability.
Returns a shutdown button and the stream with the progress limiting applied.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.