cosmos-sdk/docs/building-modules/upgrade.md

58 lines
3.1 KiB
Markdown
Raw Normal View History

documentation for in-place migrations with x/upgrade module (#8967) * upgrade draft docs * upgrade draft docs2 * change to generic id * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/README.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/README.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * added lines for version map and consensus versions * fix headers, add synopsis tag * docs for new modules * fix * remove line * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * SetUpgradeHandler example snippet * -general clean up of docs -include PR #9007 information * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> * fix self-reference * clearer definitions for overwriting genesis functions * add sync section * forgot to save this * update description of initgenesis modules * specify upgrade method * Update docs/core/upgrade.md Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> Co-authored-by: technicallyty <48813565+tytech3@users.noreply.github.com> Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> Co-authored-by: Alessio Treglia <alessio@tendermint.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2021-04-14 01:49:17 -07:00
<!--
order: 13
-->
# In-Place Store Migrations
In-place store migrations allow your modules to upgrade to new versions that include breaking changes. This document outlines how to build modules to take advantage of this functionality. {synopsis}
documentation for in-place migrations with x/upgrade module (#8967) * upgrade draft docs * upgrade draft docs2 * change to generic id * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/README.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/README.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * added lines for version map and consensus versions * fix headers, add synopsis tag * docs for new modules * fix * remove line * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * SetUpgradeHandler example snippet * -general clean up of docs -include PR #9007 information * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> * fix self-reference * clearer definitions for overwriting genesis functions * add sync section * forgot to save this * update description of initgenesis modules * specify upgrade method * Update docs/core/upgrade.md Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> Co-authored-by: technicallyty <48813565+tytech3@users.noreply.github.com> Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> Co-authored-by: Alessio Treglia <alessio@tendermint.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2021-04-14 01:49:17 -07:00
## Prerequisite Readings
2021-06-17 08:04:33 -07:00
- [In-Place Store Migration](../core/upgrade.md) {prereq}
documentation for in-place migrations with x/upgrade module (#8967) * upgrade draft docs * upgrade draft docs2 * change to generic id * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/README.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/README.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * added lines for version map and consensus versions * fix headers, add synopsis tag * docs for new modules * fix * remove line * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * SetUpgradeHandler example snippet * -general clean up of docs -include PR #9007 information * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> * fix self-reference * clearer definitions for overwriting genesis functions * add sync section * forgot to save this * update description of initgenesis modules * specify upgrade method * Update docs/core/upgrade.md Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> Co-authored-by: technicallyty <48813565+tytech3@users.noreply.github.com> Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> Co-authored-by: Alessio Treglia <alessio@tendermint.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2021-04-14 01:49:17 -07:00
## Consensus Version
Successful upgrades of existing modules require your `AppModule` to implement the function `ConsensusVersion() uint64`.
documentation for in-place migrations with x/upgrade module (#8967) * upgrade draft docs * upgrade draft docs2 * change to generic id * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/README.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/README.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * added lines for version map and consensus versions * fix headers, add synopsis tag * docs for new modules * fix * remove line * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * SetUpgradeHandler example snippet * -general clean up of docs -include PR #9007 information * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> * fix self-reference * clearer definitions for overwriting genesis functions * add sync section * forgot to save this * update description of initgenesis modules * specify upgrade method * Update docs/core/upgrade.md Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> Co-authored-by: technicallyty <48813565+tytech3@users.noreply.github.com> Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> Co-authored-by: Alessio Treglia <alessio@tendermint.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2021-04-14 01:49:17 -07:00
- The versions must be hard-coded by the module developer.
- The initial version **must** be set to 1.
documentation for in-place migrations with x/upgrade module (#8967) * upgrade draft docs * upgrade draft docs2 * change to generic id * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/README.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/README.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * added lines for version map and consensus versions * fix headers, add synopsis tag * docs for new modules * fix * remove line * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * SetUpgradeHandler example snippet * -general clean up of docs -include PR #9007 information * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> * fix self-reference * clearer definitions for overwriting genesis functions * add sync section * forgot to save this * update description of initgenesis modules * specify upgrade method * Update docs/core/upgrade.md Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> Co-authored-by: technicallyty <48813565+tytech3@users.noreply.github.com> Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> Co-authored-by: Alessio Treglia <alessio@tendermint.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2021-04-14 01:49:17 -07:00
Consensus versions serve as state-breaking versions of app modules and are incremented when the module is upgraded.
documentation for in-place migrations with x/upgrade module (#8967) * upgrade draft docs * upgrade draft docs2 * change to generic id * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/README.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/README.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * added lines for version map and consensus versions * fix headers, add synopsis tag * docs for new modules * fix * remove line * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * SetUpgradeHandler example snippet * -general clean up of docs -include PR #9007 information * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> * fix self-reference * clearer definitions for overwriting genesis functions * add sync section * forgot to save this * update description of initgenesis modules * specify upgrade method * Update docs/core/upgrade.md Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> Co-authored-by: technicallyty <48813565+tytech3@users.noreply.github.com> Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> Co-authored-by: Alessio Treglia <alessio@tendermint.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2021-04-14 01:49:17 -07:00
## Registering Migrations
To register the functionality that takes place during a module upgrade, you must register which migrations we want to take place.
Migration registration takes place in the `Configurator` using the `RegisterMigration` method. The `AppModule` reference to the configurator is in the `RegisterServices` method.
documentation for in-place migrations with x/upgrade module (#8967) * upgrade draft docs * upgrade draft docs2 * change to generic id * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/README.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/README.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * added lines for version map and consensus versions * fix headers, add synopsis tag * docs for new modules * fix * remove line * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * SetUpgradeHandler example snippet * -general clean up of docs -include PR #9007 information * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> * fix self-reference * clearer definitions for overwriting genesis functions * add sync section * forgot to save this * update description of initgenesis modules * specify upgrade method * Update docs/core/upgrade.md Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> Co-authored-by: technicallyty <48813565+tytech3@users.noreply.github.com> Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> Co-authored-by: Alessio Treglia <alessio@tendermint.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2021-04-14 01:49:17 -07:00
You can register one or more migrations. If you register more than one migration script, list the migrations in increasing order and ensure there are enough migrations that lead to the desired consensus version. For example, to migrate to version 3 of a module, register separate migrations for version 1 and version 2 as shown in the following example:
```golang
func (am AppModule) RegisterServices(cfg module.Configurator) {
// --snip--
cfg.RegisterMigration(types.ModuleName, 1, func(ctx sdk.Context) error {
// Perform in-place store migrations from ConsensusVersion 1 to 2.
})
cfg.RegisterMigration(types.ModuleName, 2, func(ctx sdk.Context) error {
// Perform in-place store migrations from ConsensusVersion 2 to 3.
})
}
```
Since these migrations are functions that need access to a Keeper's store, use a wrapper around the keepers called `Migrator` as shown in this example:
+++ https://github.com/cosmos/cosmos-sdk/blob/6ac8898fec9bd7ea2c1e5c79e0ed0c3f827beb55/x/bank/keeper/migrations.go#L8-L21
## Writing Migration Scripts
To define the functionality that takes place during an upgrade, write a migration script. Since migration scripts manipulate legacy code, place these functions in a `legacy/` directory. For example, to write migration scripts for the bank module, place the functions in `x/bank/legacy/`. Use the recommended naming convention for these functions. For example, `v043bank` is the script that migrates this legacy package `x/bank/legacy/v043`:
documentation for in-place migrations with x/upgrade module (#8967) * upgrade draft docs * upgrade draft docs2 * change to generic id * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/README.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/README.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * added lines for version map and consensus versions * fix headers, add synopsis tag * docs for new modules * fix * remove line * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/building-modules/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * SetUpgradeHandler example snippet * -general clean up of docs -include PR #9007 information * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Update docs/core/upgrade.md Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> * fix self-reference * clearer definitions for overwriting genesis functions * add sync section * forgot to save this * update description of initgenesis modules * specify upgrade method * Update docs/core/upgrade.md Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> Co-authored-by: technicallyty <48813565+tytech3@users.noreply.github.com> Co-authored-by: Amaury <1293565+amaurym@users.noreply.github.com> Co-authored-by: Barrie Byron <barrie.byron@tendermint.com> Co-authored-by: Alessio Treglia <alessio@tendermint.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2021-04-14 01:49:17 -07:00
```golang
// Migrating bank module from version 1 to 2
func (m Migrator) Migrate1to2(ctx sdk.Context) error {
return v043bank.MigrateStore(ctx, m.keeper.storeKey) // v043bank is package `x/bank/legacy/v043`.
}
```
To see example code of changes that were implemented in a migration of balance keys, check out the [func migrateBalanceKeys](https://github.com/cosmos/cosmos-sdk/blob/36f68eb9e041e20a5bb47e216ac5eb8b91f95471/x/bank/legacy/v043/store.go#L41-L62) code. For context, this code introduced migrations of the bank store that updated addresses to be prefixed by their length in bytes as outlined in [ADR-028](../architecture/adr-028-public-key-addresses.md).