Add private handler for index check
This commit is contained in:
@@ -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(),
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user