Skip to content

Commit 71803b7

Browse files
mergify[bot]randygrokjulienrbrt
authored
feat(runtime/v2): store loader on simappv2 (backport #21704) (#21717)
Co-authored-by: Randy Grok <[email protected]> Co-authored-by: Julien Robert <[email protected]>
1 parent 51b418a commit 71803b7

File tree

7 files changed

+36
-34
lines changed

7 files changed

+36
-34
lines changed

Diff for: CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i
4343
### Improvements
4444

4545
* (genutil) [#21701](https://github.com/cosmos/cosmos-sdk/pull/21701) Improved error messages for genesis validation.
46+
* (runtime) [#21704](https://github.com/cosmos/cosmos-sdk/pull/21704) Move `upgradetypes.StoreLoader` to runtime and alias it in upgrade for backward compatibility.
4647

4748
## [v0.52.0](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.52.0) - 2024-XX-XX
4849

Diff for: runtime/store.go

+21
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"cosmossdk.io/core/store"
1010
storetypes "cosmossdk.io/store/types"
1111

12+
"github.com/cosmos/cosmos-sdk/baseapp"
1213
sdk "github.com/cosmos/cosmos-sdk/types"
1314
)
1415

@@ -181,3 +182,23 @@ func (s kvStoreAdapter) ReverseIterator(start, end []byte) dbm.Iterator {
181182
func KVStoreAdapter(store store.KVStore) storetypes.KVStore {
182183
return &kvStoreAdapter{store}
183184
}
185+
186+
// UpgradeStoreLoader is used to prepare baseapp with a fixed StoreLoader
187+
// pattern. This is useful for custom upgrade loading logic.
188+
func UpgradeStoreLoader(upgradeHeight int64, storeUpgrades *store.StoreUpgrades) baseapp.StoreLoader {
189+
return func(ms storetypes.CommitMultiStore) error {
190+
if upgradeHeight == ms.LastCommitID().Version+1 {
191+
// Check if the current commit version and upgrade height matches
192+
if len(storeUpgrades.Deleted) > 0 || len(storeUpgrades.Added) > 0 {
193+
stup := &storetypes.StoreUpgrades{
194+
Added: storeUpgrades.Added,
195+
Deleted: storeUpgrades.Deleted,
196+
}
197+
return ms.LoadLatestVersionAndUpgrade(stup)
198+
}
199+
}
200+
201+
// Otherwise load default store loader
202+
return baseapp.DefaultStoreLoader(ms)
203+
}
204+
}

Diff for: simapp/v2/go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ require (
1010
cosmossdk.io/depinject v1.0.0
1111
cosmossdk.io/log v1.4.1
1212
cosmossdk.io/math v1.3.0
13-
cosmossdk.io/runtime/v2 v2.0.0-20240913102804-9fc6675885f9 // main
13+
cosmossdk.io/runtime/v2 v2.0.0-20240913142214-7d6ff0df5642 // main
1414
cosmossdk.io/server/v2 v2.0.0-20240912070812-0fc06f14104b // main
1515
cosmossdk.io/server/v2/cometbft v0.0.0-00010101000000-000000000000
1616
cosmossdk.io/store/v2 v2.0.0-20240906090851-36d9b25e8981 // main
@@ -227,7 +227,7 @@ require (
227227
google.golang.org/genproto v0.0.0-20240617180043-68d350f18fd4 // indirect
228228
google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f // indirect
229229
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
230-
google.golang.org/grpc v1.66.1 // indirect
230+
google.golang.org/grpc v1.66.2 // indirect
231231
gopkg.in/ini.v1 v1.67.0 // indirect
232232
gopkg.in/yaml.v3 v3.0.1 // indirect
233233
gotest.tools/v3 v3.5.1 // indirect

Diff for: simapp/v2/go.sum

+4-4
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,8 @@ cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM=
210210
cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU=
211211
cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE=
212212
cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k=
213-
cosmossdk.io/runtime/v2 v2.0.0-20240913102804-9fc6675885f9 h1:xAPMtcHd8bW8F+Nt/lRmoe3gAD/zghEkzHdXb/5hkwY=
214-
cosmossdk.io/runtime/v2 v2.0.0-20240913102804-9fc6675885f9/go.mod h1:bIUuDyiXe4zAa/QbOhciGdtTsmyytU8kt1FjLVtcZ1Q=
213+
cosmossdk.io/runtime/v2 v2.0.0-20240913142214-7d6ff0df5642 h1:04qILoFdYGZX8knOWFNSvs/Pineca+uzErliyqx0t3s=
214+
cosmossdk.io/runtime/v2 v2.0.0-20240913142214-7d6ff0df5642/go.mod h1:d0B92058w/s/Yegf0ySClPPJn+Vp7Cz+H3ORggSSGm4=
215215
cosmossdk.io/schema v0.2.0 h1:UH5CR1DqUq8yP+5Np8PbvG4YX0zAUsTN2Qk6yThmfMk=
216216
cosmossdk.io/schema v0.2.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ=
217217
cosmossdk.io/server/v2 v2.0.0-20240912070812-0fc06f14104b h1:rG8VQF/3yAEJOQewDgrcBWwr1xKzu+VwhrILW5hui/Y=
@@ -1399,8 +1399,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu
13991399
google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
14001400
google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
14011401
google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
1402-
google.golang.org/grpc v1.66.1 h1:hO5qAXR19+/Z44hmvIM4dQFMSYX9XcWsByfoxutBpAM=
1403-
google.golang.org/grpc v1.66.1/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
1402+
google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo=
1403+
google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
14041404
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
14051405
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
14061406
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=

Diff for: simapp/v2/upgrades.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55

66
"cosmossdk.io/core/appmodule"
77
"cosmossdk.io/core/store"
8+
"cosmossdk.io/runtime/v2"
89
"cosmossdk.io/x/accounts"
910
protocolpooltypes "cosmossdk.io/x/protocolpool/types"
1011
upgradetypes "cosmossdk.io/x/upgrade/types"
@@ -40,8 +41,6 @@ func (app *SimApp[T]) RegisterUpgradeHandlers() {
4041
Deleted: []string{"crisis"}, // The SDK discontinued the crisis module in v0.52.0
4142
}
4243

43-
// configure store loader that checks if version == upgradeHeight and applies store upgrades
44-
_ = storeUpgrades
45-
// app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades))
44+
app.SetStoreLoader(runtime.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades))
4645
}
4746
}

Diff for: x/upgrade/README.md

+3
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@ expected upgrade. It eliminiates the chances for the new binary to execute `Stor
9494
times every time on restart. Also if there are multiple upgrades planned on same height, the `Name`
9595
will ensure these `StoreUpgrades` takes place only in planned upgrade handler.
9696

97+
**Note:** The `StoreLoader` helper function for StoreUpgrades in v2 is not part of the `x/upgrade` module;
98+
instead, you can find it in the runtime v2 module.
99+
97100
### Proposal
98101

99102
Typically, a `Plan` is proposed and submitted through governance via a proposal

Diff for: x/upgrade/types/storeloader.go

+3-25
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,6 @@
11
package types
22

3-
import (
4-
corestore "cosmossdk.io/core/store"
5-
storetypes "cosmossdk.io/store/types"
3+
import "github.com/cosmos/cosmos-sdk/runtime"
64

7-
"github.com/cosmos/cosmos-sdk/baseapp"
8-
)
9-
10-
// UpgradeStoreLoader is used to prepare baseapp with a fixed StoreLoader
11-
// pattern. This is useful for custom upgrade loading logic.
12-
func UpgradeStoreLoader(upgradeHeight int64, storeUpgrades *corestore.StoreUpgrades) baseapp.StoreLoader {
13-
return func(ms storetypes.CommitMultiStore) error {
14-
if upgradeHeight == ms.LastCommitID().Version+1 {
15-
// Check if the current commit version and upgrade height matches
16-
if len(storeUpgrades.Deleted) > 0 || len(storeUpgrades.Added) > 0 {
17-
stup := &storetypes.StoreUpgrades{
18-
Added: storeUpgrades.Added,
19-
Deleted: storeUpgrades.Deleted,
20-
}
21-
return ms.LoadLatestVersionAndUpgrade(stup)
22-
}
23-
}
24-
25-
// Otherwise load default store loader
26-
return baseapp.DefaultStoreLoader(ms)
27-
}
28-
}
5+
// UpgradeStoreLoader moved to runtime package, keeping this for backwards compatibility
6+
var UpgradeStoreLoader = runtime.UpgradeStoreLoader

0 commit comments

Comments
 (0)