diff --git a/Cargo.lock b/Cargo.lock index 076ad6cb57085..3fd51ad416bff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2742,7 +2742,7 @@ dependencies = [ "tokio-rustls 0.26.0", "tokio-stream", "tokio-util 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tonic 0.12.1", + "tonic 0.12.3", "tonic-build", "tower", "tower-http", @@ -7977,7 +7977,7 @@ dependencies = [ "snap", "tokio", "tokio-stream", - "tonic 0.12.1", + "tonic 0.12.3", "tonic-health", "tower", "tower-http", @@ -8112,7 +8112,7 @@ dependencies = [ "tempfile", "thiserror", "tokio", - "tonic 0.12.1", + "tonic 0.12.3", "tracing", "typed-store", ] @@ -8292,7 +8292,7 @@ dependencies = [ "telemetry-subscribers", "tempfile", "tokio", - "tonic 0.12.1", + "tonic 0.12.3", "tracing", "typed-store", ] @@ -8334,7 +8334,7 @@ dependencies = [ "sui-protocol-config", "thiserror", "tokio", - "tonic 0.12.1", + "tonic 0.12.3", "tonic-build", "tracing", "typed-store", @@ -8375,7 +8375,7 @@ dependencies = [ "tempfile", "thiserror", "tokio", - "tonic 0.12.1", + "tonic 0.12.3", "tower", "tracing", "typed-store", @@ -14122,7 +14122,7 @@ dependencies = [ "telemetry-subscribers", "tempfile", "tokio", - "tonic 0.12.1", + "tonic 0.12.3", "tonic-build", "tower", "tracing", @@ -14528,7 +14528,7 @@ dependencies = [ "telemetry-subscribers", "test-cluster", "tokio", - "tonic 0.12.1", + "tonic 0.12.3", "tracing", ] @@ -15147,7 +15147,7 @@ dependencies = [ "tap", "thiserror", "tokio", - "tonic 0.12.1", + "tonic 0.12.3", "tracing", "typed-store-error", "url", @@ -15971,9 +15971,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -16199,9 +16199,9 @@ dependencies = [ [[package]] name = "tonic" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38659f4a91aba8598d27821589f5db7dddd94601e7a01b1e485a50e5484c7401" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" dependencies = [ "async-stream", "async-trait", @@ -16229,28 +16229,29 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "568392c5a2bd0020723e3f387891176aabafe36fd9fcd074ad309dfa0c8eb964" +checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11" dependencies = [ "prettyplease", "proc-macro2 1.0.78", "prost-build", + "prost-types 0.13.1", "quote 1.0.35", "syn 2.0.48", ] [[package]] name = "tonic-health" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e10e6a96ee08b6ce443487d4368442d328d0e746f3681f81127f7dc41b4955" +checksum = "1eaf34ddb812120f5c601162d5429933c9b527d901ab0e7f930d3147e33a09b2" dependencies = [ "async-stream", "prost 0.13.1", "tokio", "tokio-stream", - "tonic 0.12.1", + "tonic 0.12.3", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index c7a792e213cf8..cb0b46441a7f2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -497,9 +497,9 @@ toml_edit = { version = "0.19.10" } # NOTE: do not enable the `tls` feature on tonic. It will break custom TLS handling # for self signed certificates. Unit tests under consensus/core and other integration # tests will fail. -tonic = { version = "0.12", features = ["transport"] } -tonic-build = { version = "0.12", features = ["prost", "transport"] } -tonic-health = "0.12" +tonic = { version = "0.12.3", features = ["transport"] } +tonic-build = { version = "0.12.3", features = ["prost", "transport"] } +tonic-health = "0.12.3" tower = { version = "0.4.12", features = [ "full", "util", diff --git a/crates/sui-config/src/node.rs b/crates/sui-config/src/node.rs index af168eef53734..72e219c532af6 100644 --- a/crates/sui-config/src/node.rs +++ b/crates/sui-config/src/node.rs @@ -718,6 +718,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?;