diff --git a/rs/nns/governance/canister/canister.rs b/rs/nns/governance/canister/canister.rs index 6b93316f3c1..0df9c573032 100644 --- a/rs/nns/governance/canister/canister.rs +++ b/rs/nns/governance/canister/canister.rs @@ -20,7 +20,6 @@ use ic_nns_common::{ }; use ic_nns_constants::LEDGER_CANISTER_ID; use ic_nns_governance::{ - data_migration::set_initial_voting_power_economics, decoder_config, encode_metrics, governance::{Environment, Governance, HeapGrowthPotential, RngError, TimeWarp as GovTimeWarp}, is_prune_following_enabled, @@ -503,8 +502,7 @@ fn canister_init_(init_payload: ApiGovernanceProto) { schedule_timers(); - let mut governance_proto = InternalGovernanceProto::from(init_payload); - set_initial_voting_power_economics(&mut governance_proto); + let governance_proto = InternalGovernanceProto::from(init_payload); set_governance(Governance::new( governance_proto, Box::new(CanisterEnv::new()), @@ -527,7 +525,7 @@ fn canister_pre_upgrade() { fn canister_post_upgrade() { println!("{}Executing post upgrade", LOG_PREFIX); - let mut restored_state = with_upgrades_memory(|memory| { + let restored_state = with_upgrades_memory(|memory| { let result: Result = load_protobuf(memory); result }) @@ -536,9 +534,6 @@ fn canister_post_upgrade() { CANISTER MIGHT HAVE BROKEN STATE!!!!.", ); - // TODO(NNS1-3446): This can be deleted after it has been released. - set_initial_voting_power_economics(&mut restored_state); - grow_upgrades_memory_to(WASM_PAGES_RESERVED_FOR_UPGRADES_MEMORY); println!( diff --git a/rs/nns/governance/src/data_migration.rs b/rs/nns/governance/src/data_migration.rs index 256b76f1976..04d8defe3c7 100644 --- a/rs/nns/governance/src/data_migration.rs +++ b/rs/nns/governance/src/data_migration.rs @@ -8,69 +8,6 @@ //! initial value, but thereafter, it can be changed as the result of requests //! (e.g. create a proposal followed by many votes in favor). -use crate::{ - governance::LOG_PREFIX, - pb::v1::{Governance, VotingPowerEconomics}, -}; - #[path = "data_migration_tests.rs"] #[cfg(test)] mod tests; - -/// This ensures that the fields in voting_power_economics are set. -/// -/// If they already have Some value, the existing values are left alone. -/// -/// Whereas, if values are missing (or voting_power_economics itself is None), -/// they get set according to DEFAULT_VOTING_POWER_ECONOMICS. -/// -/// What we expect in production is that when governance is upgraded, -/// voting_power_economics will default to None, and during post_ugprade, this -/// gets called, causing voting_power_economics to be set to -/// DEFAULT_VOTING_POWER_ECONOMICS. -/// -/// In testing, when a new governance canister is created, -/// voting_power_economics gets set in init, which also calls this. -pub fn set_initial_voting_power_economics(governance: &mut Governance) { - let economics = governance.economics.as_mut(); - - let Some(economics) = economics else { - println!("{}ERROR: No NetworkEconomics!", LOG_PREFIX); - return; - }; - - let voting_power_economics = economics.voting_power_economics.as_mut(); - let default = VotingPowerEconomics::with_default_values(); - - let Some(voting_power_economics) = voting_power_economics else { - println!("{}Setting voting_power_economics to default.", LOG_PREFIX); - economics.voting_power_economics = Some(default); - return; - }; - - let VotingPowerEconomics { - start_reducing_voting_power_after_seconds, - clear_following_after_seconds, - } = voting_power_economics; - - if start_reducing_voting_power_after_seconds.is_none() { - println!( - "{}WARNING: voting_power_economics was set, but not its \ - start_reducing_voting_power_after_seconds field. This is weird. \ - Nevertheless, setting the field to the default.", - LOG_PREFIX, - ); - *start_reducing_voting_power_after_seconds = - default.start_reducing_voting_power_after_seconds; - } - - if clear_following_after_seconds.is_none() { - println!( - "{}WARNING: voting_power_economics was set, but not its \ - clear_following_after_seconds field. This is weird. \ - Nevertheless, setting the field to the default.", - LOG_PREFIX, - ); - *clear_following_after_seconds = default.clear_following_after_seconds; - } -} diff --git a/rs/nns/governance/src/data_migration_tests.rs b/rs/nns/governance/src/data_migration_tests.rs index 9c16bf5a561..b966ee1d847 100644 --- a/rs/nns/governance/src/data_migration_tests.rs +++ b/rs/nns/governance/src/data_migration_tests.rs @@ -1,61 +1,2 @@ +#[allow(unused)] use super::*; -use crate::pb::v1::{Governance as GovernanceProto, NetworkEconomics, VotingPowerEconomics}; -use lazy_static::lazy_static; - -mod set_initial_voting_power_economics { - use super::*; - - lazy_static! { - static ref GOVERNANCE_PROTO: GovernanceProto = GovernanceProto { - economics: Some(NetworkEconomics::with_default_values()), - ..Default::default() - }; - } - - #[test] - fn test_typical() { - let mut governance_proto = GOVERNANCE_PROTO.clone(); - governance_proto - .economics - .as_mut() - .unwrap() - .voting_power_economics = None; - - set_initial_voting_power_economics(&mut governance_proto); - - assert_eq!( - governance_proto.economics.unwrap().voting_power_economics, - Some(VotingPowerEconomics { - start_reducing_voting_power_after_seconds: Some(15_778_800), // 0.5 * 365.25 days. - clear_following_after_seconds: Some(2_629_800), // 1/12 * 365.25 days - }), - ); - } - - #[test] - fn test_weird() { - let mut governance_proto = GOVERNANCE_PROTO.clone(); - { - let voting_power_economics = governance_proto - .economics - .as_mut() - .unwrap() - .voting_power_economics - .as_mut() - .unwrap(); - - voting_power_economics.start_reducing_voting_power_after_seconds = Some(42); - voting_power_economics.clear_following_after_seconds = None; - } - - set_initial_voting_power_economics(&mut governance_proto); - - assert_eq!( - governance_proto.economics.unwrap().voting_power_economics, - Some(VotingPowerEconomics { - start_reducing_voting_power_after_seconds: Some(42), // Do not touch. - clear_following_after_seconds: Some(2_629_800), // 1/12 * 365.25 days - }), - ); - } -} // mod set_initial_voting_power_economics