pub type SelectReceivers = DynamicReceivers<ActorId, ()>;Aliased Type§
pub struct SelectReceivers {
barrier: Option<BarrierInner<()>>,
start_ts: Option<Instant>,
blocked: Vec<Pin<Box<dyn Input<Item = Result<MessageInner<()>, StreamExecutorError>, InputId = u32>>>>,
active: FuturesUnordered<StreamFuture<Pin<Box<dyn Input<Item = Result<MessageInner<()>, StreamExecutorError>, InputId = u32>>>>>,
buffered_watermarks: BTreeMap<usize, BufferedWatermarks<u32>>,
barrier_align_duration: Option<LabelGuardedMetric<GenericCounter<AtomicU64>>>,
merge_barrier_align_duration: Option<LabelGuardedMetric<Histogram>>,
}Fields§
§barrier: Option<BarrierInner<()>>The barrier we’re aligning to. If this is None, then blocked_upstreams is empty.
start_ts: Option<Instant>The start timestamp of the current barrier. Used for measuring the alignment duration.
blocked: Vec<Pin<Box<dyn Input<Item = Result<MessageInner<()>, StreamExecutorError>, InputId = u32>>>>The upstreams that’re blocked by the barrier.
active: FuturesUnordered<StreamFuture<Pin<Box<dyn Input<Item = Result<MessageInner<()>, StreamExecutorError>, InputId = u32>>>>>The upstreams that’re not blocked and can be polled.
buffered_watermarks: BTreeMap<usize, BufferedWatermarks<u32>>watermark column index -> BufferedWatermarks
barrier_align_duration: Option<LabelGuardedMetric<GenericCounter<AtomicU64>>>Currently only used for union.
merge_barrier_align_duration: Option<LabelGuardedMetric<Histogram>>Only for merge. If None, then we don’t take Instant::now() and observe during poll_next