Skip to content

Commit 3713c61

Browse files
committed
session: implement Debug for Session
Deriving Debug trait for Session may be helpful in debugging.
1 parent 58add1d commit 3713c61

File tree

6 files changed

+30
-2
lines changed

6 files changed

+30
-2
lines changed

examples/custom_load_balancing_policy.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use scylla::{
77
use std::{env, sync::Arc};
88

99
/// Example load balancing policy that prefers nodes from favorite datacenter
10+
#[derive(Debug)]
1011
struct CustomLoadBalancingPolicy {
1112
fav_datacenter_name: String,
1213
}

scylla/src/transport/load_balancing/dc_aware_round_robin.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use std::sync::{
77
use tracing::trace;
88

99
/// A data-center aware Round-robin load balancing policy.
10+
#[derive(Debug)]
1011
pub struct DcAwareRoundRobinPolicy {
1112
index: AtomicUsize,
1213
local_dc: String,

scylla/src/transport/load_balancing/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ impl<'a> Statement<'a> {
3535
pub type Plan<'a> = Box<dyn Iterator<Item = Arc<Node>> + Send + Sync + 'a>;
3636

3737
/// Policy that decides which nodes to contact for each query
38-
pub trait LoadBalancingPolicy: Send + Sync {
38+
pub trait LoadBalancingPolicy: Send + Sync + std::fmt::Debug {
3939
/// It is used for each query to find which nodes to query first
4040
fn plan<'a>(&self, statement: &Statement, cluster: &'a ClusterData) -> Plan<'a>;
4141

scylla/src/transport/load_balancing/round_robin.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use std::sync::{
77
use tracing::trace;
88

99
/// A Round-robin load balancing policy.
10+
#[derive(Debug)]
1011
pub struct RoundRobinPolicy {
1112
index: AtomicUsize,
1213
}

scylla/src/transport/load_balancing/token_aware.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use std::{collections::HashMap, sync::Arc};
99
use tracing::trace;
1010

1111
/// A wrapper load balancing policy that adds token awareness to a child policy.
12+
#[derive(Debug)]
1213
pub struct TokenAwarePolicy {
1314
child_policy: Box<dyn ChildLoadBalancingPolicy>,
1415
}
@@ -430,6 +431,7 @@ mod tests {
430431

431432
// Used as child policy for TokenAwarePolicy tests
432433
// Forwards plan passed to it in apply_child_policy() method
434+
#[derive(Debug)]
433435
struct DumbPolicy {}
434436

435437
impl LoadBalancingPolicy for DumbPolicy {

scylla/src/transport/session.rs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use crate::query::Query;
2525
use crate::routing::Token;
2626
use crate::statement::{Consistency, SerialConsistency};
2727
use crate::tracing::{GetTracingConfig, TracingEvent, TracingInfo};
28-
use crate::transport::cluster::{Cluster, ClusterData};
28+
use crate::transport::cluster::{Cluster, ClusterData, ClusterNeatDebug};
2929
use crate::transport::connection::{
3030
BatchResult, Connection, ConnectionConfig, VerifiedKeyspaceName,
3131
};
@@ -65,6 +65,29 @@ pub struct Session {
6565
auto_await_schema_agreement_timeout: Option<Duration>,
6666
}
6767

68+
/// This implementation deliberately omits some details from Cluster in order
69+
/// to avoid cluttering the print with much information of little usability.
70+
impl std::fmt::Debug for Session {
71+
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
72+
f.debug_struct("Session")
73+
.field("cluster", &ClusterNeatDebug(&self.cluster))
74+
.field("load_balancer", &self.load_balancer)
75+
.field("schema_agreement_interval", &self.schema_agreement_interval)
76+
.field("retry_policy", &self.retry_policy)
77+
.field(
78+
"speculative_execution_policy",
79+
&self.speculative_execution_policy,
80+
)
81+
.field("metrics", &self.metrics)
82+
.field("default_consistency", &self.default_consistency)
83+
.field(
84+
"auto_await_schema_agreement_timeout",
85+
&self.auto_await_schema_agreement_timeout,
86+
)
87+
.finish()
88+
}
89+
}
90+
6891
/// Configuration options for [`Session`].
6992
/// Can be created manually, but usually it's easier to use
7093
/// [SessionBuilder](super::session_builder::SessionBuilder)

0 commit comments

Comments
 (0)