feat: update x/upgrade keeper.DumpUpgradeInfoToDisk to support Plan.Info (#10532)

* feat: update x/upgrade keeper.DumpUpgradeInfoToDisk to support Plan.Info

* add changelog

* create DumpUpgradeInfoWithInfoToDisk instead of overloading DumpUpgradeInfoToDisk
This commit is contained in:
Robert Zaremba 2021-11-15 22:45:05 +00:00 committed by GitHub
parent 2bbec7a449
commit 6a46c95500
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 30 additions and 5 deletions

View File

@ -37,6 +37,9 @@ Ref: https://keepachangelog.com/en/1.0.0/
## [Unreleased] ## [Unreleased]
### Improvements
* (x/upgrade) [\#10532](https://github.com/cosmos/cosmos-sdk/pull/10532) Add `keeper.DumpUpgradeInfoWithInfoToDisk` to include `Plan.Info` in the upgrade-info file.
### Bug Fixes ### Bug Fixes
* [\#10414](https://github.com/cosmos/cosmos-sdk/pull/10414) Use `sdk.GetConfig().GetFullBIP44Path()` instead `sdk.FullFundraiserPath` to generate key * [\#10414](https://github.com/cosmos/cosmos-sdk/pull/10414) Use `sdk.GetConfig().GetFullBIP44Path()` instead `sdk.FullFundraiserPath` to generate key

View File

@ -42,7 +42,7 @@ func BeginBlocker(k keeper.Keeper, ctx sdk.Context, _ abci.RequestBeginBlock) {
if !k.HasHandler(plan.Name) { if !k.HasHandler(plan.Name) {
// Write the upgrade info to disk. The UpgradeStoreLoader uses this info to perform or skip // Write the upgrade info to disk. The UpgradeStoreLoader uses this info to perform or skip
// store migrations. // store migrations.
err := k.DumpUpgradeInfoToDisk(ctx.BlockHeight(), plan.Name) err := k.DumpUpgradeInfoWithInfoToDisk(ctx.BlockHeight(), plan.Name, plan.Info)
if err != nil { if err != nil {
panic(fmt.Errorf("unable to write upgrade info to filesystem: %s", err.Error())) panic(fmt.Errorf("unable to write upgrade info to filesystem: %s", err.Error()))
} }

View File

@ -325,23 +325,35 @@ func (k Keeper) IsSkipHeight(height int64) bool {
return k.skipUpgradeHeights[height] return k.skipUpgradeHeights[height]
} }
// DumpUpgradeInfoToDisk writes upgrade information to UpgradeInfoFileName. // DumpUpgradeInfoToDisk writes upgrade information to UpgradeInfoFileName. The function
// doesn't save the `Plan.Info` data, hence it won't support auto download functionality
// by cosmvisor.
// NOTE: this function will be update in the next release.
func (k Keeper) DumpUpgradeInfoToDisk(height int64, name string) error { func (k Keeper) DumpUpgradeInfoToDisk(height int64, name string) error {
return k.DumpUpgradeInfoWithInfoToDisk(height, name, "")
}
// Deprecated: DumpUpgradeInfoWithInfoToDisk writes upgrade information to UpgradeInfoFileName.
// `info` should be provided and contain Plan.Info data in order to support
// auto download functionality by cosmovisor and other tools using upgarde-info.json
// (GetUpgradeInfoPath()) file.
func (k Keeper) DumpUpgradeInfoWithInfoToDisk(height int64, name string, info string) error {
upgradeInfoFilePath, err := k.GetUpgradeInfoPath() upgradeInfoFilePath, err := k.GetUpgradeInfoPath()
if err != nil { if err != nil {
return err return err
} }
upgradeInfo := store.UpgradeInfo{ upgradeInfo := upgradeInfo{
Name: name, Name: name,
Height: height, Height: height,
Info: info,
} }
info, err := json.Marshal(upgradeInfo) bz, err := json.Marshal(upgradeInfo)
if err != nil { if err != nil {
return err return err
} }
return ioutil.WriteFile(upgradeInfoFilePath, info, 0600) return ioutil.WriteFile(upgradeInfoFilePath, bz, 0600)
} }
// GetUpgradeInfoPath returns the upgrade info file path // GetUpgradeInfoPath returns the upgrade info file path
@ -388,3 +400,13 @@ func (k Keeper) ReadUpgradeInfoFromDisk() (store.UpgradeInfo, error) {
return upgradeInfo, nil return upgradeInfo, nil
} }
// upgradeInfo is stripped types.Plan structure used to dump upgrade plan data.
type upgradeInfo struct {
// Name has types.Plan.Name value
Name string `json:"name,omitempty"`
// Height has types.Plan.Height value
Height int64 `json:"height,omitempty"`
// Height has types.Plan.Height value
Info string `json:"info,omitempty"`
}