From 6686367452e1321472990cc974a52fad9a2e3eb7 Mon Sep 17 00:00:00 2001 From: John Spray Date: Wed, 28 Feb 2024 14:22:01 +0000 Subject: [PATCH] wip --- control_plane/attachment_service/src/service.rs | 4 ++++ libs/pageserver_api/src/models.rs | 8 ++++++++ test_runner/regress/test_sharding_service.py | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/control_plane/attachment_service/src/service.rs b/control_plane/attachment_service/src/service.rs index 14cf3c8a56..3bdc387e13 100644 --- a/control_plane/attachment_service/src/service.rs +++ b/control_plane/attachment_service/src/service.rs @@ -1273,6 +1273,10 @@ impl Service { } } + // TODO: we need to recognize that this is an update, issue a DB + // transaction to update the shards, and _then_ apply in memory. Need + // the tenant equivalent of node_configure() + shard.config = req.config.tenant_conf.clone(); shard.schedule(scheduler)?; diff --git a/libs/pageserver_api/src/models.rs b/libs/pageserver_api/src/models.rs index aa1a8ae487..a780c80357 100644 --- a/libs/pageserver_api/src/models.rs +++ b/libs/pageserver_api/src/models.rs @@ -289,6 +289,14 @@ pub struct TenantConfig { pub timeline_get_throttle: Option, } +impl TenantConfig { + pub fn merge(&mut self, other: &TenantConfig) { + if let Some(max_lsn_wal_lag) = &other.max_lsn_wal_lag { + self.max_lsn_wal_lag = Some(*max_lsn_wal_lag); + } + } +} + #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] #[serde(tag = "kind")] pub enum EvictionPolicy { diff --git a/test_runner/regress/test_sharding_service.py b/test_runner/regress/test_sharding_service.py index 1e8a0417de..1ef5836e8b 100644 --- a/test_runner/regress/test_sharding_service.py +++ b/test_runner/regress/test_sharding_service.py @@ -385,7 +385,7 @@ def test_sharding_service_onboarding( dest_tenant_after_conf_change["generation"] == dest_tenant_before_conf_change["generation"] ) dest_tenant_conf_after = dest_ps.http_client().tenant_config(tenant_id) - assert dest_tenant_conf_after == TenantConfig.from_json(modified_tenant_conf) + assert dest_tenant_conf_after.tenant_specific_overrides == modified_tenant_conf env.attachment_service.consistency_check()