Skip to content

Commit b0fabe5

Browse files
committed
session,iterator: record raw metadata&rows size
Even though we can no longer record rows serialized size without accounting metadata, we can record their serialized size together.
1 parent fe4322d commit b0fabe5

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

scylla/src/transport/iterator.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,8 @@ where
328328
.load_balancing_policy
329329
.on_query_success(&self.statement_info, elapsed, node);
330330

331+
request_span.record_raw_rows_fields(&rows);
332+
331333
let received_page = ReceivedPage { rows, tracing_id };
332334

333335
// Send next page to RowIterator

scylla/src/transport/query_result.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,10 @@ impl QueryResult {
167167
}
168168
}
169169

170+
pub(crate) fn raw_metadata_and_rows(&self) -> Option<&RawMetadataAndRawRows> {
171+
self.raw_metadata_and_rows.as_ref()
172+
}
173+
170174
/// Warnings emitted by the database.
171175
#[inline]
172176
pub fn warnings(&self) -> impl Iterator<Item = &str> {

scylla/src/transport/session.rs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ use async_trait::async_trait;
1818
use futures::future::join_all;
1919
use futures::future::try_join_all;
2020
use itertools::{Either, Itertools};
21+
use scylla_cql::frame::response::result::RawMetadataAndRawRows;
2122
use scylla_cql::frame::response::result::{deser_cql_value, ColumnSpec};
2223
use scylla_cql::frame::response::NonErrorResponse;
2324
use scylla_cql::types::serialize::batch::BatchValues;
@@ -798,6 +799,7 @@ impl Session {
798799
self.handle_auto_await_schema_agreement(&response).await?;
799800

800801
let (result, paging_state) = response.into_query_result_and_paging_state()?;
802+
span.record_result_fields(&result);
801803
let result = result.into_legacy_result()?;
802804
Ok((result, paging_state))
803805
}
@@ -1235,6 +1237,7 @@ impl Session {
12351237
self.handle_auto_await_schema_agreement(&response).await?;
12361238

12371239
let (result, paging_state) = response.into_query_result_and_paging_state()?;
1240+
span.record_result_fields(&result);
12381241
let result = result.into_legacy_result()?;
12391242
Ok((result, paging_state))
12401243
}
@@ -1430,8 +1433,12 @@ impl Session {
14301433

14311434
let result = match run_query_result {
14321435
RunQueryResult::IgnoredWriteError => LegacyQueryResult::mock_empty(),
1433-
RunQueryResult::Completed(response) => response.into_legacy_result()?,
1436+
RunQueryResult::Completed(result) => {
1437+
span.record_result_fields(&result);
1438+
result.into_legacy_result()?
1439+
}
14341440
};
1441+
14351442
Ok(result)
14361443
}
14371444

@@ -2150,6 +2157,17 @@ impl RequestSpan {
21502157
}
21512158
}
21522159

2160+
pub(crate) fn record_raw_rows_fields(&self, raw_rows: &RawMetadataAndRawRows) {
2161+
self.span
2162+
.record("raw_result_size", raw_rows.metadata_and_rows_bytes_size());
2163+
}
2164+
2165+
pub(crate) fn record_result_fields(&self, query_result: &QueryResult) {
2166+
if let Some(raw_metadata_and_rows) = query_result.raw_metadata_and_rows() {
2167+
self.record_raw_rows_fields(raw_metadata_and_rows);
2168+
}
2169+
}
2170+
21532171
pub(crate) fn record_replicas<'a>(&'a self, replicas: &'a [(impl Borrow<Arc<Node>>, Shard)]) {
21542172
struct ReplicaIps<'a, N>(&'a [(N, Shard)]);
21552173
impl<'a, N> Display for ReplicaIps<'a, N>

0 commit comments

Comments
 (0)