Skip to content

Commit 8c10e77

Browse files
committed
lbp_config: remove DcAwareness and introduce NodeLocationPreference enum
This is because in the following commits we will be introducing rack awareness.
1 parent 7b8572a commit 8c10e77

File tree

2 files changed

+38
-18
lines changed

2 files changed

+38
-18
lines changed

scylla-rust-wrapper/src/cluster.rs

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ const DRIVER_VERSION: &str = env!("CARGO_PKG_VERSION");
5151
pub(crate) struct LoadBalancingConfig {
5252
pub(crate) token_awareness_enabled: bool,
5353
pub(crate) token_aware_shuffling_replicas_enabled: bool,
54-
pub(crate) dc_awareness: Option<DcAwareness>,
54+
pub(crate) node_location_preference: NodeLocationPreference,
5555
pub(crate) latency_awareness_enabled: bool,
5656
pub(crate) latency_awareness_builder: LatencyAwarenessBuilder,
5757
}
@@ -65,10 +65,8 @@ impl LoadBalancingConfig {
6565
builder =
6666
builder.enable_shuffling_replicas(self.token_aware_shuffling_replicas_enabled);
6767
}
68-
if let Some(dc_awareness) = self.dc_awareness {
69-
builder = builder
70-
.prefer_datacenter(dc_awareness.local_dc)
71-
.permit_dc_failover(true)
68+
if let NodeLocationPreference::Datacenter { local_dc } = self.node_location_preference {
69+
builder = builder.prefer_datacenter(local_dc).permit_dc_failover(true)
7270
}
7371
if self.latency_awareness_enabled {
7472
builder = builder.latency_awareness(self.latency_awareness_builder);
@@ -81,16 +79,17 @@ impl Default for LoadBalancingConfig {
8179
Self {
8280
token_awareness_enabled: true,
8381
token_aware_shuffling_replicas_enabled: true,
84-
dc_awareness: None,
82+
node_location_preference: NodeLocationPreference::Any,
8583
latency_awareness_enabled: false,
8684
latency_awareness_builder: Default::default(),
8785
}
8886
}
8987
}
9088

9189
#[derive(Clone, Debug)]
92-
pub(crate) struct DcAwareness {
93-
pub(crate) local_dc: String,
90+
pub(crate) enum NodeLocationPreference {
91+
Any,
92+
Datacenter { local_dc: String },
9493
}
9594

9695
#[derive(Clone)]
@@ -457,7 +456,7 @@ pub unsafe extern "C" fn cass_cluster_set_credentials_n(
457456
#[no_mangle]
458457
pub unsafe extern "C" fn cass_cluster_set_load_balance_round_robin(cluster_raw: *mut CassCluster) {
459458
let cluster = ptr_to_ref_mut(cluster_raw);
460-
cluster.load_balancing_config.dc_awareness = None;
459+
cluster.load_balancing_config.node_location_preference = NodeLocationPreference::Any;
461460
}
462461

463462
#[no_mangle]
@@ -496,7 +495,8 @@ pub(crate) unsafe fn set_load_balance_dc_aware_n(
496495
.unwrap()
497496
.to_string();
498497

499-
load_balancing_config.dc_awareness = Some(DcAwareness { local_dc });
498+
load_balancing_config.node_location_preference =
499+
NodeLocationPreference::Datacenter { local_dc };
500500

501501
CassError::CASS_OK
502502
}
@@ -851,7 +851,10 @@ mod tests {
851851
/* Test valid configurations */
852852
let cluster = ptr_to_ref(cluster_raw);
853853
{
854-
assert_matches!(cluster.load_balancing_config.dc_awareness, None);
854+
assert_matches!(
855+
cluster.load_balancing_config.node_location_preference,
856+
NodeLocationPreference::Any
857+
);
855858
assert!(cluster.load_balancing_config.token_awareness_enabled);
856859
assert!(!cluster.load_balancing_config.latency_awareness_enabled);
857860
}
@@ -878,8 +881,14 @@ mod tests {
878881
40,
879882
);
880883

881-
let dc_awareness = cluster.load_balancing_config.dc_awareness.as_ref().unwrap();
882-
assert_eq!(dc_awareness.local_dc, "eu");
884+
let node_location_preference =
885+
&cluster.load_balancing_config.node_location_preference;
886+
match node_location_preference {
887+
NodeLocationPreference::Datacenter { local_dc } => {
888+
assert_eq!(local_dc, "eu")
889+
}
890+
_ => panic!("Expected preferred dc"),
891+
}
883892
assert!(!cluster.load_balancing_config.token_awareness_enabled);
884893
assert!(cluster.load_balancing_config.latency_awareness_enabled);
885894
}

scylla-rust-wrapper/src/exec_profile.rs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use crate::argconv::{free_boxed, ptr_to_cstr_n, ptr_to_ref, ptr_to_ref_mut, strl
1717
use crate::batch::CassBatch;
1818
use crate::cass_error::CassError;
1919
use crate::cass_types::CassConsistency;
20-
use crate::cluster::{set_load_balance_dc_aware_n, LoadBalancingConfig};
20+
use crate::cluster::{set_load_balance_dc_aware_n, LoadBalancingConfig, NodeLocationPreference};
2121
use crate::retry_policy::CassRetryPolicy;
2222
use crate::retry_policy::RetryPolicy::{
2323
DefaultRetryPolicy, DowngradingConsistencyRetryPolicy, FallthroughRetryPolicy,
@@ -353,7 +353,9 @@ pub unsafe extern "C" fn cass_execution_profile_set_load_balance_round_robin(
353353
profile: *mut CassExecProfile,
354354
) -> CassError {
355355
let profile_builder = ptr_to_ref_mut(profile);
356-
profile_builder.load_balancing_config.dc_awareness = None;
356+
profile_builder
357+
.load_balancing_config
358+
.node_location_preference = NodeLocationPreference::Any;
357359

358360
CassError::CASS_OK
359361
}
@@ -473,7 +475,10 @@ mod tests {
473475
/* Test valid configurations */
474476
let profile = ptr_to_ref(profile_raw);
475477
{
476-
assert_matches!(profile.load_balancing_config.dc_awareness, None);
478+
assert_matches!(
479+
profile.load_balancing_config.node_location_preference,
480+
NodeLocationPreference::Any
481+
);
477482
assert!(profile.load_balancing_config.token_awareness_enabled);
478483
assert!(!profile.load_balancing_config.latency_awareness_enabled);
479484
}
@@ -500,8 +505,14 @@ mod tests {
500505
40,
501506
);
502507

503-
let dc_awareness = profile.load_balancing_config.dc_awareness.as_ref().unwrap();
504-
assert_eq!(dc_awareness.local_dc, "eu");
508+
let node_location_preference =
509+
&profile.load_balancing_config.node_location_preference;
510+
match node_location_preference {
511+
NodeLocationPreference::Datacenter { local_dc } => {
512+
assert_eq!(local_dc, "eu")
513+
}
514+
_ => panic!("Expected preferred dc"),
515+
}
505516
assert!(!profile.load_balancing_config.token_awareness_enabled);
506517
assert!(profile.load_balancing_config.latency_awareness_enabled);
507518
}

0 commit comments

Comments
 (0)