Options scylla 6 workarounds

This commit is contained in:
Dominik Werder
2025-07-29 15:44:28 +02:00
parent cd38c0940c
commit aa435e2442
3 changed files with 51 additions and 17 deletions

View File

@@ -10,6 +10,7 @@ path = "src/netpod.rs"
[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_yaml = "0.9.34"
http = "1.0.0"
humantime = "2.1.0"
humantime-serde = "1.1.1"

View File

@@ -1028,6 +1028,7 @@ pub struct Cluster {
scylla_lt: Option<ScyllaConfig>,
cache_scylla: Option<ScyllaConfig>,
pub announce_backends: Option<Vec<String>>,
use_scylla6_workarounds: Option<UseScylla6Workarounds>,
}
impl Cluster {
@@ -1049,6 +1050,12 @@ impl Cluster {
self.scylla_lt.as_ref()
}
pub fn use_scylla6_workarounds(&self) -> UseScylla6Workarounds {
self.use_scylla6_workarounds
.clone()
.unwrap_or(UseScylla6Workarounds::with_workarounds())
}
pub fn test_00() -> Self {
Self {
backend: "testbackend-00".into(),
@@ -1069,10 +1076,31 @@ impl Cluster {
scylla_lt: None,
cache_scylla: None,
announce_backends: None,
use_scylla6_workarounds: None,
}
}
}
#[test]
fn test_cluster_config_parse() {
let cfg = r###"
name: some-name
cluster:
backend: noname
database:
host: some
port: 123
user: some
pass: some
name: some
nodes:
use_scylla6_workarounds: false
"###;
let cfg = serde_yaml::from_slice::<NodeConfig>(cfg.as_bytes()).unwrap();
let v = *cfg.cluster.use_scylla6_workarounds();
assert!(v == false);
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct NodeConfig {
pub name: String,
@@ -4034,6 +4062,7 @@ pub fn test_cluster() -> Cluster {
is_central_storage: false,
file_io_buffer_size: Default::default(),
announce_backends: None,
use_scylla6_workarounds: None,
}
}
@@ -4072,6 +4101,7 @@ pub fn sls_test_cluster() -> Cluster {
is_central_storage: false,
file_io_buffer_size: Default::default(),
announce_backends: None,
use_scylla6_workarounds: None,
}
}
@@ -4110,6 +4140,7 @@ pub fn archapp_test_cluster() -> Cluster {
is_central_storage: false,
file_io_buffer_size: Default::default(),
announce_backends: None,
use_scylla6_workarounds: None,
}
}
@@ -4533,11 +4564,15 @@ pub unsafe fn extltmut<'a, 'b, T>(t: &'a mut T) -> &'b mut T {
unsafe { core::mem::transmute(t) }
}
#[derive(Debug, Clone)]
pub struct UseScylla6Workarounds(pub bool);
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UseScylla6Workarounds(bool);
impl Default for UseScylla6Workarounds {
fn default() -> Self {
impl UseScylla6Workarounds {
pub fn production_default() -> Self {
Self::with_workarounds()
}
pub fn with_workarounds() -> Self {
Self(true)
}
}
@@ -4550,14 +4585,12 @@ impl std::ops::Deref for UseScylla6Workarounds {
}
}
impl From<Option<u32>> for UseScylla6Workarounds {
fn from(value: Option<u32>) -> Self {
value.map_or(Default::default(), |x| {
if x == 0 {
UseScylla6Workarounds(false)
} else {
UseScylla6Workarounds(true)
}
})
impl From<u32> for UseScylla6Workarounds {
fn from(value: u32) -> Self {
if value == 0 {
UseScylla6Workarounds(false)
} else {
UseScylla6Workarounds(true)
}
}
}

View File

@@ -1,10 +1,10 @@
#![allow(unused)]
use super::evrange::NanoRange;
use super::evrange::SeriesRange;
use crate::timeunits::SEC;
use crate::BinnedRangeEnum;
use crate::Dim0Kind;
use crate::TsNano;
use crate::timeunits::SEC;
use chrono::DateTime;
use chrono::Utc;
@@ -24,7 +24,7 @@ fn test_binned_range_covering_00() {
} else {
panic!()
}
let r2 = r.binned_range_time();
let r2 = r.binned_range_time().unwrap();
let a = r2.edges();
assert_eq!(a.len(), 1 + r.bin_count() as usize);
assert_eq!(a[0], TsNano((((10 * 60) + 10) * 60 + 0) * SEC));
@@ -54,7 +54,7 @@ fn test_binned_range_covering_01() {
} else {
panic!()
}
let r2 = r.binned_range_time();
let r2 = r.binned_range_time().unwrap();
let a = r2.edges();
assert_eq!(a.len(), 1 + r.bin_count() as usize);
assert_eq!(a[0], TsNano((((0 * 60) + 20) * 60 + 0) * SEC));
@@ -84,7 +84,7 @@ fn test_binned_range_covering_02() {
} else {
panic!()
}
let r2 = r.binned_range_time();
let r2 = r.binned_range_time().unwrap();
let a = r2.edges();
assert_eq!(a.len(), 1 + r.bin_count() as usize);
assert_eq!(a[0], TsNano((((0 * 60) + 20) * 60 + 0) * SEC));