Skip to content

Commit ccc540b

Browse files
committed
modified time taken to be sent as response header
1 parent 947e049 commit ccc540b

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

src/handlers/http/query.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ use crate::query::error::ExecuteError;
4444
use crate::query::{execute, CountsRequest, CountsResponse, Query as LogicalQuery};
4545
use crate::query::{TableScanVisitor, QUERY_SESSION};
4646
use crate::rbac::Users;
47-
use crate::response::QueryResponse;
47+
use crate::response::{QueryResponse, TIME_ELAPSED_HEADER};
4848
use crate::storage::object_storage::commit_schema_to_storage;
4949
use crate::storage::ObjectStorageError;
5050
use crate::utils::actix::extract_session_key_from_req;
@@ -67,7 +67,6 @@ pub struct Query {
6767
}
6868

6969
pub async fn query(req: HttpRequest, query_request: Query) -> Result<HttpResponse, QueryError> {
70-
let start = Instant::now();
7170
let session_state = QUERY_SESSION.state();
7271
let raw_logical_plan = match session_state
7372
.create_logical_plan(&query_request.query)
@@ -123,17 +122,20 @@ pub async fn query(req: HttpRequest, query_request: Query) -> Result<HttpRespons
123122
Value::Array(vec![json!({column_name: count})])
124123
};
125124

125+
let total_time = format!("{:?}", time.elapsed());
126126
let time = time.elapsed().as_secs_f64();
127127

128128
QUERY_EXECUTE_TIME
129129
.with_label_values(&[&table_name])
130130
.observe(time);
131131

132-
return Ok(HttpResponse::Ok().json(response));
132+
return Ok(HttpResponse::Ok()
133+
.insert_header((TIME_ELAPSED_HEADER, total_time.as_str()))
134+
.json(response));
133135
}
134136

135137
let (records, fields) = execute(query, &table_name).await?;
136-
let total_time = format!("{:?}", start.elapsed());
138+
let total_time = format!("{:?}", time.elapsed());
137139
let response = QueryResponse {
138140
records,
139141
fields,

src/response.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ use itertools::Itertools;
2323
use serde_json::{json, Value};
2424
use tracing::info;
2525

26+
pub const TIME_ELAPSED_HEADER: &str = "p-time-elapsed";
27+
2628
pub struct QueryResponse {
2729
pub records: Vec<RecordBatch>,
2830
pub fields: Vec<String>,
@@ -51,15 +53,13 @@ impl QueryResponse {
5153
json!({
5254
"fields": self.fields,
5355
"records": values,
54-
"totalTime": self.total_time
5556
})
5657
} else {
57-
json!({
58-
"records": values,
59-
"totalTime": self.total_time
60-
})
58+
Value::Array(values)
6159
};
6260

63-
Ok(HttpResponse::Ok().json(response))
61+
Ok(HttpResponse::Ok()
62+
.insert_header((TIME_ELAPSED_HEADER, self.total_time.as_str()))
63+
.json(response))
6464
}
6565
}

0 commit comments

Comments
 (0)