pub mod epoch;
pub mod historical;
pub mod operator;
pub mod row;
use reifydb_core::common::CommitVersion;
pub trait EvictionWatermark: Send + Sync + 'static {
fn watermark(&self) -> CommitVersion;
}
#[cfg(test)]
mod tests {
use super::*;
struct MinWatermark {
query: CommitVersion,
consumer: CommitVersion,
}
impl EvictionWatermark for MinWatermark {
fn watermark(&self) -> CommitVersion {
self.query.min(self.consumer)
}
}
#[test]
fn cutoff_is_the_min_of_query_and_consumer_watermarks() {
let consumer_behind = MinWatermark {
query: CommitVersion(100),
consumer: CommitVersion(40),
};
assert_eq!(
consumer_behind.watermark(),
CommitVersion(40),
"a consumer lagging behind the query watermark must pull the cutoff down to its position"
);
let query_behind = MinWatermark {
query: CommitVersion(30),
consumer: CommitVersion(90),
};
assert_eq!(
query_behind.watermark(),
CommitVersion(30),
"a lagging query watermark must pull the cutoff down too - the min is symmetric"
);
}
}