|
@@ -2,24 +2,36 @@
|
|
|
#![allow(clippy::redundant_closure_call)] // disable it because of the substrate lib design
|
|
|
|
|
|
use crate::VERSION;
|
|
|
+use rstd::prelude::*;
|
|
|
use sr_primitives::{print, traits::Zero};
|
|
|
-use srml_support::{decl_event, decl_module, decl_storage};
|
|
|
+use srml_support::{debug, decl_event, decl_module, decl_storage};
|
|
|
|
|
|
impl<T: Trait> Module<T> {
|
|
|
+ /// This method is called from on_initialize() when a runtime upgrade is detected. This
|
|
|
+ /// happens when the runtime spec version is found to be higher than the stored value.
|
|
|
+ /// Important to note this method should be carefully maintained, because it runs on every runtime
|
|
|
+ /// upgrade.
|
|
|
fn runtime_upgraded() {
|
|
|
- print("running runtime initializers...");
|
|
|
+ print("Running runtime upgraded handler");
|
|
|
|
|
|
- // ...
|
|
|
- // add initialization of modules introduced in new runtime release. This
|
|
|
+ // Add initialization of modules introduced in new runtime release. Typically this
|
|
|
// would be any new storage values that need an initial value which would not
|
|
|
- // have been initialized with config() or build() mechanism.
|
|
|
- // ...
|
|
|
+ // have been initialized with config() or build() chainspec construction mechanism.
|
|
|
+ // Other tasks like resetting values, migrating values etc.
|
|
|
+
|
|
|
+ // Runtime Upgrade Code for going from Rome to Constantinople
|
|
|
|
|
|
// Create the Council mint. If it fails, we can't do anything about it here.
|
|
|
- let _ = governance::council::Module::<T>::create_new_council_mint(
|
|
|
+ if let Err(err) = governance::council::Module::<T>::create_new_council_mint(
|
|
|
minting::BalanceOf::<T>::zero(),
|
|
|
- );
|
|
|
+ ) {
|
|
|
+ debug::warn!(
|
|
|
+ "Failed to create a mint for council during migration: {:?}",
|
|
|
+ err
|
|
|
+ );
|
|
|
+ }
|
|
|
|
|
|
+ // Initialise the proposal system various periods
|
|
|
proposals_codex::Module::<T>::set_default_config_values();
|
|
|
|
|
|
Self::deposit_event(RawEvent::Migrated(
|
|
@@ -31,11 +43,9 @@ impl<T: Trait> Module<T> {
|
|
|
|
|
|
pub trait Trait:
|
|
|
system::Trait
|
|
|
- + storage::data_directory::Trait
|
|
|
- + storage::data_object_storage_registry::Trait
|
|
|
- + forum::Trait
|
|
|
- + sudo::Trait
|
|
|
- + governance::council::Trait
|
|
|
+ + governance::election::Trait
|
|
|
+ + content_working_group::Trait
|
|
|
+ + roles::actors::Trait
|
|
|
+ proposals_codex::Trait
|
|
|
{
|
|
|
type Event: From<Event<Self>> + Into<<Self as system::Trait>::Event>;
|
|
@@ -43,9 +53,13 @@ pub trait Trait:
|
|
|
|
|
|
decl_storage! {
|
|
|
trait Store for Module<T: Trait> as Migration {
|
|
|
- /// Records at what runtime spec version the store was initialized. This allows the runtime
|
|
|
- /// to know when to run initialize code if it was installed as an update.
|
|
|
- pub SpecVersion get(spec_version) build(|_| VERSION.spec_version) : Option<u32>;
|
|
|
+ /// Records at what runtime spec version the store was initialized. At genesis this will be
|
|
|
+ /// initialized to Some(VERSION.spec_version). It is an Option because the first time the module
|
|
|
+ /// was introduced was as a runtime upgrade and type was never changed.
|
|
|
+ /// When the runtime is upgraded the spec version be updated.
|
|
|
+ pub SpecVersion get(spec_version) build(|_config: &GenesisConfig| {
|
|
|
+ VERSION.spec_version
|
|
|
+ }) : Option<u32>;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -61,11 +75,16 @@ decl_module! {
|
|
|
|
|
|
fn on_initialize(_now: T::BlockNumber) {
|
|
|
if Self::spec_version().map_or(true, |spec_version| VERSION.spec_version > spec_version) {
|
|
|
- // mark store version with current version of the runtime
|
|
|
+ // Mark store version with current version of the runtime
|
|
|
SpecVersion::put(VERSION.spec_version);
|
|
|
|
|
|
- // run migrations and store initializers
|
|
|
+ // Run migrations and store initializers
|
|
|
Self::runtime_upgraded();
|
|
|
+
|
|
|
+ Self::deposit_event(RawEvent::Migrated(
|
|
|
+ <system::Module<T>>::block_number(),
|
|
|
+ VERSION.spec_version,
|
|
|
+ ));
|
|
|
}
|
|
|
}
|
|
|
}
|