Add private handler for index check

This commit is contained in:
Dominik Werder
2025-05-07 16:30:40 +02:00
parent 7243fff317
commit b3fe0de7af
6 changed files with 13 additions and 24 deletions
+2 -4
View File
@@ -193,7 +193,7 @@ async fn binned_instrumented(
if accepts_json_or_all(&head.headers) { if accepts_json_or_all(&head.headers) {
Ok(binned_json_single(res2, ctx, ncc).await?) Ok(binned_json_single(res2, ctx, ncc).await?)
} else { } else {
let ret = error_response(format!("Unsupported Accept: {:?}", &head.headers), ctx.reqid()); let ret = error_response(format!("unsupported accept: {:?}", &head.headers), ctx.reqid());
Ok(ret) Ok(ret)
} }
} }
@@ -243,8 +243,7 @@ async fn binned_json_single(
) -> Result<StreamResponse, Error> { ) -> Result<StreamResponse, Error> {
// TODO unify with binned_json_framed // TODO unify with binned_json_framed
debug!("binned_json_single"); debug!("binned_json_single");
let rt1 = res2.query.retention_time_1(); let rt1 = res2.query.retention_time();
let rt2 = res2.query.retention_time_2();
let pbp = res2.query.prebinned_partitioning(); let pbp = res2.query.prebinned_partitioning();
// let rts = [RetentionTime::Short, RetentionTime::Medium, RetentionTime::Long]; // let rts = [RetentionTime::Short, RetentionTime::Medium, RetentionTime::Long];
// for rt in rts { // for rt in rts {
@@ -252,7 +251,6 @@ async fn binned_json_single(
{ {
let mut stream = scyllaconn::binwriteindex::BinWriteIndexRtStream::new( let mut stream = scyllaconn::binwriteindex::BinWriteIndexRtStream::new(
rt1, rt1,
rt2,
SeriesId::new(res2.ch_conf.series().unwrap()), SeriesId::new(res2.ch_conf.series().unwrap()),
pbp.clone(), pbp.clone(),
res2.query.range().to_time().unwrap(), res2.query.range().to_time().unwrap(),
+5 -8
View File
@@ -39,7 +39,6 @@ type Fut2 =
#[derive(Debug)] #[derive(Debug)]
pub struct BinWriteIndexEntry { pub struct BinWriteIndexEntry {
pub rt: u16,
pub lsp: u32, pub lsp: u32,
pub binlen: u32, pub binlen: u32,
} }
@@ -54,7 +53,6 @@ pub struct BinWriteIndexSet {
#[derive(Debug)] #[derive(Debug)]
pub struct BinWriteIndexRtStream { pub struct BinWriteIndexRtStream {
rt1: RetentionTime, rt1: RetentionTime,
rt2: RetentionTime,
series: SeriesId, series: SeriesId,
scyqueue: ScyllaQueue, scyqueue: ScyllaQueue,
pbp: PrebinnedPartitioning, pbp: PrebinnedPartitioning,
@@ -72,7 +70,6 @@ impl BinWriteIndexRtStream {
pub fn new( pub fn new(
rt1: RetentionTime, rt1: RetentionTime,
rt2: RetentionTime,
series: SeriesId, series: SeriesId,
pbp: PrebinnedPartitioning, pbp: PrebinnedPartitioning,
range: NanoRange, range: NanoRange,
@@ -84,7 +81,6 @@ impl BinWriteIndexRtStream {
let (msp_end, lsp_end) = pbp.msp_lsp(range.end_ts().add_dt_nano(pbp.bin_len().dt_ns()).to_ts_ms()); let (msp_end, lsp_end) = pbp.msp_lsp(range.end_ts().add_dt_nano(pbp.bin_len().dt_ns()).to_ts_ms());
BinWriteIndexRtStream { BinWriteIndexRtStream {
rt1, rt1,
rt2,
series, series,
scyqueue, scyqueue,
pbp, pbp,
@@ -99,7 +95,6 @@ impl BinWriteIndexRtStream {
async fn next_query_fut( async fn next_query_fut(
scyqueue: &ScyllaQueue, scyqueue: &ScyllaQueue,
rt1: RetentionTime, rt1: RetentionTime,
rt2: RetentionTime,
series: SeriesId, series: SeriesId,
pbp: PrebinnedPartitioning, pbp: PrebinnedPartitioning,
msp: u32, msp: u32,
@@ -108,7 +103,7 @@ impl BinWriteIndexRtStream {
) -> Result<(u32, u32, u32, VecDeque<BinWriteIndexEntry>), crate::worker::Error> { ) -> Result<(u32, u32, u32, VecDeque<BinWriteIndexEntry>), crate::worker::Error> {
debug!("make_next_query_fut msp {} lsp {} {}", msp, lsp_min, lsp_max); debug!("make_next_query_fut msp {} lsp {} {}", msp, lsp_min, lsp_max);
let res = scyqueue let res = scyqueue
.bin_write_index_read(rt1, rt2, series, pbp, MspU32(msp), lsp_min, lsp_max) .bin_write_index_read(rt1, series, pbp, MspU32(msp), lsp_min, lsp_max)
.await?; .await?;
Ok((msp, lsp_min, lsp_max, res)) Ok((msp, lsp_min, lsp_max, res))
} }
@@ -128,7 +123,6 @@ impl BinWriteIndexRtStream {
let fut = Self::next_query_fut( let fut = Self::next_query_fut(
scyqueue, scyqueue,
self.rt1.clone(), self.rt1.clone(),
self.rt2.clone(),
self.series.clone(), self.series.clone(),
self.pbp.clone(), self.pbp.clone(),
msp, msp,
@@ -160,7 +154,10 @@ impl Stream for BinWriteIndexRtStream {
}; };
Ready(Some(Ok(item))) Ready(Some(Ok(item)))
} }
Ready(Err(e)) => Ready(Some(Err(e.into()))), Ready(Err(e)) => {
self.fut1 = None;
Ready(Some(Err(e.into())))
}
Pending => Pending, Pending => Pending,
} }
} else if let Some(fut) = self.as_mut().make_next_query_fut(cx) { } else if let Some(fut) = self.as_mut().make_next_query_fut(cx) {
@@ -56,7 +56,6 @@ impl BinWriteIndexStream {
let rts = [RetentionTime::Short, RetentionTime::Medium, RetentionTime::Long]; let rts = [RetentionTime::Short, RetentionTime::Medium, RetentionTime::Long];
for rt in rts { for rt in rts {
let s = BinWriteIndexRtStream::new( let s = BinWriteIndexRtStream::new(
rt.clone(),
rt.clone(), rt.clone(),
series.clone(), series.clone(),
PrebinnedPartitioning::Day1, PrebinnedPartitioning::Day1,
+1 -1
View File
@@ -70,7 +70,7 @@ impl EventReadOpts {
Self { Self {
one_before, one_before,
with_values, with_values,
qucap: qucap.unwrap_or(1), qucap: qucap.unwrap_or(3),
} }
} }
+3 -3
View File
@@ -236,9 +236,9 @@ async fn make_prebinned_f32(ks: &str, rt: &RetentionTime, scy: &Session) -> Resu
async fn make_bin_write_index_read(ks: &str, rt: &RetentionTime, scy: &Session) -> Result<PreparedStatement, Error> { async fn make_bin_write_index_read(ks: &str, rt: &RetentionTime, scy: &Session) -> Result<PreparedStatement, Error> {
let cql = format!( let cql = format!(
concat!( concat!(
"select rt, lsp, binlen", "select lsp, binlen",
" from {}.{}bin_write_index_v03", " from {}.{}bin_write_index_v04",
" where series = ? and pbp = ? and msp = ? and rt = ?", " where series = ? and pbp = ? and msp = ?",
" and lsp >= ? and lsp < ?", " and lsp >= ? and lsp < ?",
), ),
ks, ks,
+2 -7
View File
@@ -71,7 +71,6 @@ struct ReadPrebinnedF32 {
#[derive(Debug)] #[derive(Debug)]
struct BinWriteIndexRead { struct BinWriteIndexRead {
rt1: RetentionTime, rt1: RetentionTime,
rt2: RetentionTime,
series: SeriesId, series: SeriesId,
pbp: PrebinnedPartitioning, pbp: PrebinnedPartitioning,
msp: MspU32, msp: MspU32,
@@ -99,7 +98,6 @@ impl BinWriteIndexRead {
self.series.id() as i64, self.series.id() as i64,
self.pbp.db_ix() as i16, self.pbp.db_ix() as i16,
self.msp.0 as i32, self.msp.0 as i32,
self.rt2.to_index_db_i32() as i16,
self.lsp_min as i32, self.lsp_min as i32,
self.lsp_max as i32, self.lsp_max as i32,
); );
@@ -107,11 +105,10 @@ impl BinWriteIndexRead {
let res = scy let res = scy
.execute_iter(stmts.rt(&self.rt1).bin_write_index_read().clone(), params) .execute_iter(stmts.rt(&self.rt1).bin_write_index_read().clone(), params)
.await?; .await?;
let mut it = res.rows_stream::<(i16, i32, i32)>()?; let mut it = res.rows_stream::<(i32, i32)>()?;
let mut all = VecDeque::new(); let mut all = VecDeque::new();
while let Some((rt, lsp, binlen)) = it.try_next().await? { while let Some((lsp, binlen)) = it.try_next().await? {
let v = BinWriteIndexEntry { let v = BinWriteIndexEntry {
rt: rt as u16,
lsp: lsp as u32, lsp: lsp as u32,
binlen: binlen as u32, binlen: binlen as u32,
}; };
@@ -274,7 +271,6 @@ impl ScyllaQueue {
pub async fn bin_write_index_read( pub async fn bin_write_index_read(
&self, &self,
rt1: RetentionTime, rt1: RetentionTime,
rt2: RetentionTime,
series: SeriesId, series: SeriesId,
pbp: PrebinnedPartitioning, pbp: PrebinnedPartitioning,
msp: MspU32, msp: MspU32,
@@ -284,7 +280,6 @@ impl ScyllaQueue {
let (tx, rx) = async_channel::bounded(1); let (tx, rx) = async_channel::bounded(1);
let job = BinWriteIndexRead { let job = BinWriteIndexRead {
rt1, rt1,
rt2,
series, series,
pbp, pbp,
msp, msp,