From 79559bffb58afddb9763ba6719a47b4dd8bda8c8 Mon Sep 17 00:00:00 2001 From: sadhansood Date: Sun, 22 Sep 2024 01:02:18 -0700 Subject: [PATCH] Add an option to disable fullnode pruning in test cluster --- crates/sui-config/src/node.rs | 4 ++++ crates/sui-swarm-config/src/node_config_builder.rs | 14 +++++++++++++- crates/sui-swarm/src/memory/swarm.rs | 11 ++++++++++- crates/test-cluster/src/lib.rs | 11 +++++++++++ 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/crates/sui-config/src/node.rs b/crates/sui-config/src/node.rs index 208f014108581..35c651ef5a36f 100644 --- a/crates/sui-config/src/node.rs +++ b/crates/sui-config/src/node.rs @@ -717,6 +717,10 @@ impl Default for AuthorityStorePruningConfig { } impl AuthorityStorePruningConfig { + pub fn set_num_epochs_to_retain(&mut self, num_epochs_to_retain: u64) { + self.num_epochs_to_retain = num_epochs_to_retain; + } + pub fn set_num_epochs_to_retain_for_checkpoints(&mut self, num_epochs_to_retain: Option) { self.num_epochs_to_retain_for_checkpoints = num_epochs_to_retain; } diff --git a/crates/sui-swarm-config/src/node_config_builder.rs b/crates/sui-swarm-config/src/node_config_builder.rs index ebdcb01fbcfba..8a4f722586370 100644 --- a/crates/sui-swarm-config/src/node_config_builder.rs +++ b/crates/sui-swarm-config/src/node_config_builder.rs @@ -278,6 +278,7 @@ pub struct FullnodeConfigBuilder { policy_config: Option, fw_config: Option, data_ingestion_dir: Option, + disable_pruning: bool, } impl FullnodeConfigBuilder { @@ -312,6 +313,11 @@ impl FullnodeConfigBuilder { self } + pub fn with_disable_pruning(mut self, disable_pruning: bool) -> Self { + self.disable_pruning = disable_pruning; + self + } + pub fn with_expensive_safety_check_config( mut self, expensive_safety_check_config: ExpensiveSafetyCheckConfig, @@ -458,6 +464,12 @@ impl FullnodeConfigBuilder { ..Default::default() }; + let mut pruning_config = AuthorityStorePruningConfig::default(); + if self.disable_pruning { + pruning_config.set_num_epochs_to_retain_for_checkpoints(None); + pruning_config.set_num_epochs_to_retain(u64::MAX); + }; + NodeConfig { protocol_key_pair: AuthorityKeyPairWithPath::new(validator_config.key_pair), account_key_pair: KeyPairWithPath::new(validator_config.account_key_pair), @@ -489,7 +501,7 @@ impl FullnodeConfigBuilder { grpc_load_shed: None, grpc_concurrency_limit: None, p2p_config, - authority_store_pruning_config: AuthorityStorePruningConfig::default(), + authority_store_pruning_config: pruning_config, end_of_epoch_broadcast_channel_capacity: default_end_of_epoch_broadcast_channel_capacity(), checkpoint_executor_config, diff --git a/crates/sui-swarm/src/memory/swarm.rs b/crates/sui-swarm/src/memory/swarm.rs index 5c0df441d2a03..e3cd089495a3c 100644 --- a/crates/sui-swarm/src/memory/swarm.rs +++ b/crates/sui-swarm/src/memory/swarm.rs @@ -58,6 +58,7 @@ pub struct SwarmBuilder { max_submit_position: Option, submit_delay_step_override_millis: Option, state_accumulator_v2_enabled_config: StateAccumulatorV2EnabledConfig, + disable_fullnode_pruning: bool, } impl SwarmBuilder { @@ -86,6 +87,7 @@ impl SwarmBuilder { max_submit_position: None, submit_delay_step_override_millis: None, state_accumulator_v2_enabled_config: StateAccumulatorV2EnabledConfig::Global(true), + disable_fullnode_pruning: false, } } } @@ -116,6 +118,7 @@ impl SwarmBuilder { max_submit_position: self.max_submit_position, submit_delay_step_override_millis: self.submit_delay_step_override_millis, state_accumulator_v2_enabled_config: self.state_accumulator_v2_enabled_config, + disable_fullnode_pruning: self.disable_fullnode_pruning, } } @@ -289,6 +292,11 @@ impl SwarmBuilder { self } + pub fn with_disable_fullnode_pruning(mut self) -> Self { + self.disable_fullnode_pruning = true; + self + } + pub fn with_submit_delay_step_override_millis( mut self, submit_delay_step_override_millis: u64, @@ -375,7 +383,8 @@ impl SwarmBuilder { .with_run_with_range(self.fullnode_run_with_range) .with_policy_config(self.fullnode_policy_config) .with_data_ingestion_dir(ingest_data) - .with_fw_config(self.fullnode_fw_config); + .with_fw_config(self.fullnode_fw_config) + .with_disable_pruning(self.disable_fullnode_pruning); if let Some(spvc) = &self.fullnode_supported_protocol_versions_config { let supported_versions = match spvc { diff --git a/crates/test-cluster/src/lib.rs b/crates/test-cluster/src/lib.rs index 19df6434bf337..bbb4ef021370e 100644 --- a/crates/test-cluster/src/lib.rs +++ b/crates/test-cluster/src/lib.rs @@ -883,6 +883,7 @@ pub struct TestClusterBuilder { num_validators: Option, fullnode_rpc_port: Option, enable_fullnode_events: bool, + disable_fullnode_pruning: bool, validator_supported_protocol_versions_config: ProtocolVersionsConfig, // Default to validator_supported_protocol_versions_config, but can be overridden. fullnode_supported_protocol_versions_config: Option, @@ -912,6 +913,7 @@ impl TestClusterBuilder { fullnode_rpc_port: None, num_validators: None, enable_fullnode_events: false, + disable_fullnode_pruning: false, validator_supported_protocol_versions_config: ProtocolVersionsConfig::Default, fullnode_supported_protocol_versions_config: None, db_checkpoint_config_validators: DBCheckpointConfig::default(), @@ -982,6 +984,11 @@ impl TestClusterBuilder { self } + pub fn disable_fullnode_pruning(mut self) -> Self { + self.disable_fullnode_pruning = true; + self + } + pub fn with_enable_db_checkpoints_validators(mut self) -> Self { self.db_checkpoint_config_validators = DBCheckpointConfig { perform_db_checkpoints_at_epoch_end: true, @@ -1455,6 +1462,10 @@ impl TestClusterBuilder { builder.with_submit_delay_step_override_millis(submit_delay_step_override_millis); } + if self.disable_fullnode_pruning { + builder = builder.with_disable_fullnode_pruning(); + } + let mut swarm = builder.build(); swarm.launch().await?;