From 5e8ea50d1bfda9f8c42dee3c96da93298b7e5eb8 Mon Sep 17 00:00:00 2001 From: Robert Zaremba Date: Mon, 15 Nov 2021 22:45:05 +0000 Subject: [PATCH] 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 --- x/upgrade/abci.go | 2 +- x/upgrade/keeper/keeper.go | 30 ++++++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/x/upgrade/abci.go b/x/upgrade/abci.go index d14cd4e7253d..3a15e8d3b90a 100644 --- a/x/upgrade/abci.go +++ b/x/upgrade/abci.go @@ -58,7 +58,7 @@ func BeginBlocker(k keeper.Keeper, ctx sdk.Context, _ abci.RequestBeginBlock) { if !k.HasHandler(plan.Name) { // Write the upgrade info to disk. The UpgradeStoreLoader uses this info to perform or skip // store migrations. - err := k.DumpUpgradeInfoToDisk(ctx.BlockHeight(), plan.Name) + err := k.DumpUpgradeInfoWithInfoToDisk(ctx.BlockHeight(), plan.Name, plan.Info) if err != nil { panic(fmt.Errorf("unable to write upgrade info to filesystem: %s", err.Error())) } diff --git a/x/upgrade/keeper/keeper.go b/x/upgrade/keeper/keeper.go index 1092885bcb3f..1e5a4799320d 100644 --- a/x/upgrade/keeper/keeper.go +++ b/x/upgrade/keeper/keeper.go @@ -235,23 +235,35 @@ func (k Keeper) IsSkipHeight(height int64) bool { 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 { + 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() if err != nil { return err } - upgradeInfo := store.UpgradeInfo{ + upgradeInfo := upgradeInfo{ Name: name, Height: height, + Info: info, } - info, err := json.Marshal(upgradeInfo) + bz, err := json.Marshal(upgradeInfo) if err != nil { return err } - return ioutil.WriteFile(upgradeInfoFilePath, info, 0600) + return ioutil.WriteFile(upgradeInfoFilePath, bz, 0600) } // GetUpgradeInfoPath returns the upgrade info file path @@ -298,3 +310,13 @@ func (k Keeper) ReadUpgradeInfoFromDisk() (store.UpgradeInfo, error) { 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"` +}