Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/frontend/src/instance/grpc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ impl GrpcQueryHandler for Instance {
start: promql.start,
end: promql.end,
step: promql.step,
lookback: "5m".to_string(),
};
let mut result =
SqlQueryHandler::do_promql_query(self, &prom_query, ctx.clone()).await;
Expand Down
3 changes: 3 additions & 0 deletions src/operator/src/statement/tql.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,14 @@ impl StatementExecutor {
end: eval.end,
step: eval.step,
query: eval.query,
lookback: eval.lookback.unwrap_or("5m".to_string()),
};
QueryLanguageParser::parse_promql(&promql, &query_ctx).context(ParseQuerySnafu)?
}
Tql::Explain(explain) => {
let promql = PromQuery {
query: explain.query,
lookback: explain.lookback.unwrap_or("5m".to_string()),
..PromQuery::default()
};
let explain_node_name = if explain.is_verbose {
Expand All @@ -63,6 +65,7 @@ impl StatementExecutor {
end: analyze.end,
step: analyze.step,
query: analyze.query,
lookback: analyze.lookback.unwrap_or("5m".to_string()),
};
let analyze_node_name = if analyze.is_verbose {
ANALYZE_VERBOSE_NODE_NAME
Expand Down
17 changes: 14 additions & 3 deletions src/query/src/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ use crate::error::{
};
use crate::metrics::{PARSE_PROMQL_ELAPSED, PARSE_SQL_ELAPSED};

const DEFAULT_LOOKBACK: u64 = 5 * 60; // 5m
pub const DEFAULT_LOOKBACK_STRING: &str = "5m";
pub const EXPLAIN_NODE_NAME: &str = "EXPLAIN";
pub const EXPLAIN_VERBOSE_NODE_NAME: &str = "EXPLAIN VERBOSE";
Expand Down Expand Up @@ -98,6 +97,7 @@ pub struct PromQuery {
pub start: String,
pub end: String,
pub step: String,
pub lookback: String,
}

impl Default for PromQuery {
Expand All @@ -107,6 +107,7 @@ impl Default for PromQuery {
start: String::from("0"),
end: String::from("0"),
step: String::from("5m"),
lookback: DEFAULT_LOOKBACK_STRING.to_string(),
}
}
}
Expand Down Expand Up @@ -165,13 +166,22 @@ impl QueryLanguageParser {
query: &query.query,
})?;

let lookback_delta = query
.lookback
.parse::<u64>()
.map(Duration::from_secs)
.or_else(|_| promql_parser::util::parse_duration(&query.lookback))
.map_err(|msg| BoxedError::new(PlainError::new(msg, StatusCode::InvalidArguments)))
.context(QueryParseSnafu {
query: &query.query,
})?;

let eval_stmt = EvalStmt {
expr,
start,
end,
interval: step,
// TODO(ruihang): provide a way to adjust this parameter.
lookback_delta: Duration::from_secs(DEFAULT_LOOKBACK),
lookback_delta,
};

Ok(QueryStatement::Promql(eval_stmt))
Expand Down Expand Up @@ -353,6 +363,7 @@ mod test {
start: "2022-02-13T17:14:00Z".to_string(),
end: "2023-02-13T17:14:00Z".to_string(),
step: "1d".to_string(),
lookback: "5m".to_string(),
};

#[cfg(not(windows))]
Expand Down
2 changes: 1 addition & 1 deletion src/servers/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -340,7 +340,7 @@ pub enum Error {

#[snafu(display("Failed to parse PromQL: {query:?}"))]
ParsePromQL {
query: PromQuery,
query: Box<PromQuery>,
location: Location,
source: query::error::Error,
},
Expand Down
2 changes: 2 additions & 0 deletions src/servers/src/grpc/prom_query_gateway.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ impl PrometheusGateway for PrometheusGatewayService {
start: range_query.start,
end: range_query.end,
step: range_query.step,
lookback: "5m".to_string(),
Comment thread
etolbakov marked this conversation as resolved.
Outdated
}
}
Promql::InstantQuery(instant_query) => {
Expand All @@ -71,6 +72,7 @@ impl PrometheusGateway for PrometheusGatewayService {
start: time.clone(),
end: time,
step: String::from("1s"),
lookback: "5m".to_string(),
}
}
};
Expand Down
1 change: 1 addition & 0 deletions src/servers/src/http/handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,7 @@ impl From<PromqlQuery> for PromQuery {
start: query.start,
end: query.end,
step: query.step,
lookback: "5m".to_string(),
}
}
}
Expand Down
5 changes: 5 additions & 0 deletions src/servers/src/http/prometheus.rs
Comment thread
tisonkun marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ pub async fn instant_query(
start: time.clone(),
end: time,
step: "1s".to_string(),
lookback: "5m".to_string(),
};

let result = handler.do_query(&prom_query, query_ctx).await;
Expand Down Expand Up @@ -216,6 +217,7 @@ pub async fn range_query(
start: params.start.or(form_params.start).unwrap_or_default(),
end: params.end.or(form_params.end).unwrap_or_default(),
step: params.step.or(form_params.step).unwrap_or_default(),
lookback: "5m".to_string(),
};

let result = handler.do_query(&prom_query, query_ctx).await;
Expand Down Expand Up @@ -320,6 +322,7 @@ pub async fn labels_query(
start: start.clone(),
end: end.clone(),
step: DEFAULT_LOOKBACK_STRING.to_string(),
lookback: DEFAULT_LOOKBACK_STRING.to_string(),
};

let result = handler.do_query(&prom_query, query_ctx.clone()).await;
Expand Down Expand Up @@ -597,6 +600,7 @@ pub async fn label_values_query(
start: start.clone(),
end: end.clone(),
step: DEFAULT_LOOKBACK_STRING.to_string(),
Comment thread
tisonkun marked this conversation as resolved.
lookback: DEFAULT_LOOKBACK_STRING.to_string(),
};
let result = handler.do_query(&prom_query, query_ctx.clone()).await;
if let Err(err) =
Expand Down Expand Up @@ -737,6 +741,7 @@ pub async fn series_query(
end: end.clone(),
// TODO: find a better value for step
step: DEFAULT_LOOKBACK_STRING.to_string(),
lookback: DEFAULT_LOOKBACK_STRING.to_string(),
};
let result = handler.do_query(&prom_query, query_ctx.clone()).await;

Expand Down
1 change: 1 addition & 0 deletions src/servers/tests/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,7 @@ impl GrpcQueryHandler for DummyInstance {
start: promql.start,
end: promql.end,
step: promql.step,
lookback: "5m".to_string(),
};
let mut result =
SqlQueryHandler::do_promql_query(self, &prom_query, ctx).await;
Expand Down