Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(sns): Add SnsRoot.reset_timers #2216

Merged
merged 16 commits into from
Oct 25, 2024
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,19 @@ message Decimal {
// E.g. "3.14".
optional string human_readable = 1;
}

// API types related to managing canister timers.

message ResetTimersRequest {}
message ResetTimersResponse {}

message Timers {
optional bool requires_periodic_tasks = 1;
optional uint64 last_reset_timestamp_seconds = 2;
optional uint64 last_spawned_timestamp_seconds = 3;
}

message GetTimersRequest {}
message GetTimersResponse {
optional Timers timers = 1;
}
70 changes: 70 additions & 0 deletions rs/nervous_system/proto/src/gen/ic_nervous_system.pb.v1.rs
Original file line number Diff line number Diff line change
Expand Up @@ -150,3 +150,73 @@ pub struct Decimal {
#[prost(string, optional, tag = "1")]
pub human_readable: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(
Eq,
candid::CandidType,
candid::Deserialize,
comparable::Comparable,
serde::Serialize,
Clone,
Copy,
PartialEq,
::prost::Message,
)]
pub struct ResetTimersRequest {}
#[derive(
Eq,
candid::CandidType,
candid::Deserialize,
comparable::Comparable,
serde::Serialize,
Clone,
Copy,
PartialEq,
::prost::Message,
)]
pub struct ResetTimersResponse {}
#[derive(
Eq,
candid::CandidType,
candid::Deserialize,
comparable::Comparable,
serde::Serialize,
Clone,
Copy,
PartialEq,
::prost::Message,
)]
pub struct Timers {
#[prost(bool, optional, tag = "1")]
pub requires_periodic_tasks: ::core::option::Option<bool>,
#[prost(uint64, optional, tag = "2")]
pub last_reset_timestamp_seconds: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub last_spawned_timestamp_seconds: ::core::option::Option<u64>,
}
#[derive(
Eq,
candid::CandidType,
candid::Deserialize,
comparable::Comparable,
serde::Serialize,
Clone,
Copy,
PartialEq,
::prost::Message,
)]
pub struct GetTimersRequest {}
#[derive(
Eq,
candid::CandidType,
candid::Deserialize,
comparable::Comparable,
serde::Serialize,
Clone,
Copy,
PartialEq,
::prost::Message,
)]
pub struct GetTimersResponse {
#[prost(message, optional, tag = "1")]
pub timers: ::core::option::Option<Timers>,
}
12 changes: 7 additions & 5 deletions rs/sns/governance/canister/canister.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ use ic_nervous_system_common::{
dfn_core_stable_mem_utils::{BufferedStableMemReader, BufferedStableMemWriter},
serve_logs, serve_logs_v2, serve_metrics,
};
use ic_nervous_system_proto::pb::v1::{
GetTimersRequest, GetTimersResponse, ResetTimersRequest, ResetTimersResponse, Timers,
};
use ic_nervous_system_runtime::CdkRuntime;
use ic_nns_constants::LEDGER_CANISTER_ID as NNS_LEDGER_CANISTER_ID;
#[cfg(feature = "test")]
Expand All @@ -43,11 +46,10 @@ use ic_sns_governance::{
GetModeResponse, GetNeuron, GetNeuronResponse, GetProposal, GetProposalResponse,
GetRunningSnsVersionRequest, GetRunningSnsVersionResponse,
GetSnsInitializationParametersRequest, GetSnsInitializationParametersResponse,
GetTimersRequest, GetTimersResponse, GetUpgradeJournalRequest, GetUpgradeJournalResponse,
Governance as GovernanceProto, ListNervousSystemFunctionsResponse, ListNeurons,
ListNeuronsResponse, ListProposals, ListProposalsResponse, ManageNeuron,
ManageNeuronResponse, NervousSystemParameters, ResetTimersRequest, ResetTimersResponse,
RewardEvent, SetMode, SetModeResponse, Timers,
GetUpgradeJournalRequest, GetUpgradeJournalResponse, Governance as GovernanceProto,
ListNervousSystemFunctionsResponse, ListNeurons, ListNeuronsResponse, ListProposals,
ListProposalsResponse, ManageNeuron, ManageNeuronResponse, NervousSystemParameters,
RewardEvent, SetMode, SetModeResponse,
},
types::{Environment, HeapGrowthPotential},
};
Expand Down
1 change: 1 addition & 0 deletions rs/sns/governance/canister/governance.did
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,7 @@ type Governance = record {
};

type Timers = record {
requires_periodic_tasks : opt bool;
last_reset_timestamp_seconds : opt nat64;
last_spawned_timestamp_seconds : opt nat64;
};
Expand Down
1 change: 1 addition & 0 deletions rs/sns/governance/canister/governance_test.did
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,7 @@ type Governance = record {
};

type Timers = record {
requires_periodic_tasks : opt bool;
last_reset_timestamp_seconds : opt nat64;
last_spawned_timestamp_seconds : opt nat64;
};
Expand Down
15 changes: 1 addition & 14 deletions rs/sns/governance/proto/ic_sns_governance/pb/v1/governance.proto
Original file line number Diff line number Diff line change
Expand Up @@ -1472,20 +1472,7 @@ message Governance {
CachedUpgradeSteps cached_upgrade_steps = 29;

// Information about the timers that perform periodic tasks of this Governance canister.
optional Timers timers = 31;
}

message Timers {
optional uint64 last_reset_timestamp_seconds = 1;
optional uint64 last_spawned_timestamp_seconds = 2;
}

message ResetTimersRequest {}
message ResetTimersResponse {}

message GetTimersRequest {}
message GetTimersResponse {
optional Timers timers = 1;
optional ic_nervous_system.pb.v1.Timers timers = 31;
}

// Request message for 'get_metadata'.
Expand Down
60 changes: 1 addition & 59 deletions rs/sns/governance/src/gen/ic_sns_governance.pb.v1.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1649,7 +1649,7 @@ pub struct Governance {
pub cached_upgrade_steps: ::core::option::Option<governance::CachedUpgradeSteps>,
/// Information about the timers that perform periodic tasks of this Governance canister.
#[prost(message, optional, tag = "31")]
pub timers: ::core::option::Option<Timers>,
pub timers: ::core::option::Option<::ic_nervous_system_proto::pb::v1::Timers>,
}
/// Nested message and enum types in `Governance`.
pub mod governance {
Expand Down Expand Up @@ -1996,64 +1996,6 @@ pub mod governance {
}
}
}
#[derive(
candid::CandidType,
candid::Deserialize,
comparable::Comparable,
Clone,
Copy,
PartialEq,
::prost::Message,
)]
pub struct Timers {
#[prost(uint64, optional, tag = "1")]
pub last_reset_timestamp_seconds: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub last_spawned_timestamp_seconds: ::core::option::Option<u64>,
}
#[derive(
candid::CandidType,
candid::Deserialize,
comparable::Comparable,
Clone,
Copy,
PartialEq,
::prost::Message,
)]
pub struct ResetTimersRequest {}
#[derive(
candid::CandidType,
candid::Deserialize,
comparable::Comparable,
Clone,
Copy,
PartialEq,
::prost::Message,
)]
pub struct ResetTimersResponse {}
#[derive(
candid::CandidType,
candid::Deserialize,
comparable::Comparable,
Clone,
Copy,
PartialEq,
::prost::Message,
)]
pub struct GetTimersRequest {}
#[derive(
candid::CandidType,
candid::Deserialize,
comparable::Comparable,
Clone,
Copy,
PartialEq,
::prost::Message,
)]
pub struct GetTimersResponse {
#[prost(message, optional, tag = "1")]
pub timers: ::core::option::Option<Timers>,
}
/// Request message for 'get_metadata'.
#[derive(
candid::CandidType,
Expand Down
1 change: 1 addition & 0 deletions rs/sns/init/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -646,6 +646,7 @@ impl SnsInitPayload {
archive_canister_ids: vec![],
index_canister_id: Some(sns_canister_ids.index),
testflight,
timers: None,
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
use assert_matches::assert_matches;
use candid::{Decode, Encode};
use ic_nervous_system_proto::pb::v1::Timers;
use ic_nns_test_utils::sns_wasm::{
build_swap_sns_wasm, create_modified_sns_wasm, ensure_sns_wasm_gzipped,
};
use ic_sns_swap::pb::v1::{DerivedState, GetStateRequest, GetStateResponse, Swap, Timers};
use ic_sns_swap::pb::v1::{DerivedState, GetStateRequest, GetStateResponse, Swap};
use ic_sns_wasm::pb::v1::SnsWasm;
use ic_state_machine_tests::StateMachine;
use ic_types::{CanisterId, PrincipalId};
Expand Down
1 change: 1 addition & 0 deletions rs/sns/integration_tests/src/root.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ fn test_get_status() {
archive_canister_ids: vec![],
index_canister_id: Some(PrincipalId::new_user_test_id(45)),
testflight: false,
timers: None,
},
)
.await;
Expand Down
Loading