refactor(x/group): use core migrations api (#19423)

Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com>
This commit is contained in:
Julien Robert 2024-02-14 19:26:52 +01:00 committed by GitHub
parent 01bad3ebb6
commit f6d970d52f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 40 additions and 32 deletions

View File

@ -41,7 +41,7 @@ type App struct {
*baseapp.BaseApp
ModuleManager *module.Manager
configurator module.Configurator
configurator module.Configurator // nolint:staticcheck // SA1019: Configurator is deprecated but still used in runtime v1.
config *runtimev1alpha1.Module
storeKeys []storetypes.StoreKey
interfaceRegistry codectypes.InterfaceRegistry
@ -233,7 +233,7 @@ func (a *App) RegisterNodeService(clientCtx client.Context, cfg config.Config) {
}
// Configurator returns the app's configurator.
func (a *App) Configurator() module.Configurator {
func (a *App) Configurator() module.Configurator { // nolint:staticcheck // SA1019: Configurator is deprecated but still used in runtime v1.
return a.configurator
}

View File

@ -36,7 +36,7 @@ type appModule struct {
app *App
}
func (m appModule) RegisterServices(configurator module.Configurator) {
func (m appModule) RegisterServices(configurator module.Configurator) { // nolint:staticcheck // SA1019: Configurator is deprecated but still used in runtime v1.
err := m.app.registerRuntimeServices(configurator)
if err != nil {
panic(err)

View File

@ -8,7 +8,7 @@ import (
"github.com/cosmos/cosmos-sdk/types/module"
)
func (a *App) registerRuntimeServices(cfg module.Configurator) error {
func (a *App) registerRuntimeServices(cfg module.Configurator) error { // nolint:staticcheck // SA1019: Configurator is deprecated but still used in runtime v1.
autocliv1.RegisterQueryServer(cfg.QueryServer(), services.NewAutoCLIQueryService(a.ModuleManager.Modules))
reflectionSvc, err := services.NewReflectionService()

View File

@ -103,7 +103,7 @@ type autocliConfigurator struct {
err error
}
var _ module.Configurator = &autocliConfigurator{}
var _ module.Configurator = &autocliConfigurator{} // nolint:staticcheck // SA1019: Configurator is deprecated but still used in runtime v1.
func (a *autocliConfigurator) MsgServer() gogogrpc.Server { return &a.msgServer }

View File

@ -177,7 +177,7 @@ type SimApp struct {
sm *module.SimulationManager
// module configurator
configurator module.Configurator
configurator module.Configurator // nolint:staticcheck // SA1019: Configurator is deprecated but still used in runtime v1.
}
func init() {
@ -651,7 +651,7 @@ func (app *SimApp) EndBlocker(ctx sdk.Context) (sdk.EndBlock, error) {
return app.ModuleManager.EndBlock(ctx)
}
func (a *SimApp) Configurator() module.Configurator {
func (a *SimApp) Configurator() module.Configurator { // nolint:staticcheck // SA1019: Configurator is deprecated but still used in runtime v1.
return a.configurator
}

View File

@ -17,10 +17,6 @@ import (
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
)
// Configurator provides the hooks to allow modules to configure and register
// their services in the RegisterServices method. It is designed to eventually
// support module object capabilities isolation as described in
// https://github.com/cosmos/cosmos-sdk/issues/7093
// Deprecated: The Configurator is deprecated.
// Preferably use core services for registering msg/query server and migrations.
type Configurator interface {

View File

@ -6,6 +6,7 @@ import (
"github.com/grpc-ecosystem/grpc-gateway/runtime"
"github.com/spf13/cobra"
"google.golang.org/grpc"
"cosmossdk.io/core/appmodule"
"cosmossdk.io/x/accounts/cli"
@ -32,10 +33,11 @@ const (
)
var (
_ appmodule.AppModule = AppModule{}
_ appmodule.AppModule = AppModule{}
_ appmodule.HasServices = AppModule{}
_ module.HasName = AppModule{}
_ module.HasGenesis = AppModule{}
_ module.HasServices = AppModule{}
_ module.HasConsensusVersion = AppModule{}
)
@ -59,9 +61,11 @@ func (m AppModule) RegisterGRPCGatewayRoutes(_ client.Context, _ *runtime.ServeM
// App module services
func (m AppModule) RegisterServices(configurator module.Configurator) {
v1.RegisterQueryServer(configurator.QueryServer(), NewQueryServer(m.k))
v1.RegisterMsgServer(configurator.MsgServer(), NewMsgServer(m.k))
func (m AppModule) RegisterServices(registar grpc.ServiceRegistrar) error {
v1.RegisterQueryServer(registar, NewQueryServer(m.k))
v1.RegisterMsgServer(registar, NewMsgServer(m.k))
return nil
}
// App module genesis

View File

@ -1,9 +1,9 @@
package keeper
import (
v2 "cosmossdk.io/x/group/migrations/v2"
"context"
sdk "github.com/cosmos/cosmos-sdk/types"
v2 "cosmossdk.io/x/group/migrations/v2"
)
// Migrator is a struct for handling in-place store migrations.
@ -17,7 +17,7 @@ func NewMigrator(keeper Keeper) Migrator {
}
// Migrate1to2 migrates from version 1 to 2.
func (m Migrator) Migrate1to2(ctx sdk.Context) error {
func (m Migrator) Migrate1to2(ctx context.Context) error {
return v2.Migrate(
ctx,
m.keeper.storeService,

View File

@ -1,6 +1,7 @@
package v2
import (
"context"
"encoding/binary"
"fmt"
@ -24,7 +25,7 @@ const (
// Migrate migrates the x/group module state from the consensus version 1 to version 2.
// Specifically, it changes the group policy account from module account to base account.
func Migrate(
ctx sdk.Context,
ctx context.Context,
storeService store.KVStoreService,
accountKeeper group.AccountKeeper,
groupPolicySeq orm.Sequence,

View File

@ -7,6 +7,7 @@ import (
gwruntime "github.com/grpc-ecosystem/grpc-gateway/runtime"
"github.com/spf13/cobra"
"google.golang.org/grpc"
"cosmossdk.io/core/address"
"cosmossdk.io/core/appmodule"
@ -30,11 +31,12 @@ var (
_ module.AppModuleBasic = AppModule{}
_ module.AppModuleSimulation = AppModule{}
_ module.HasGenesis = AppModule{}
_ module.HasServices = AppModule{}
_ module.HasInvariants = AppModule{}
_ appmodule.AppModule = AppModule{}
_ appmodule.HasEndBlocker = AppModule{}
_ appmodule.HasServices = AppModule{}
_ appmodule.HasMigrations = AppModule{}
)
type AppModule struct {
@ -124,16 +126,21 @@ func (am AppModule) ExportGenesis(ctx context.Context, cdc codec.JSONCodec) json
return cdc.MustMarshalJSON(gs)
}
// RegisterServices registers a gRPC query service to respond to the
// module-specific gRPC queries.
func (am AppModule) RegisterServices(cfg module.Configurator) {
group.RegisterMsgServer(cfg.MsgServer(), am.keeper)
group.RegisterQueryServer(cfg.QueryServer(), am.keeper)
// RegisterServices registers module services.
func (am AppModule) RegisterServices(registrar grpc.ServiceRegistrar) error {
group.RegisterMsgServer(registrar, am.keeper)
group.RegisterQueryServer(registrar, am.keeper)
return nil
}
func (am AppModule) RegisterMigrations(mr appmodule.MigrationRegistrar) error {
m := keeper.NewMigrator(am.keeper)
if err := cfg.RegisterMigration(group.ModuleName, 1, m.Migrate1to2); err != nil {
panic(fmt.Sprintf("failed to migrate x/%s from version 1 to 2: %v", group.ModuleName, err))
if err := mr.Register(group.ModuleName, 1, m.Migrate1to2); err != nil {
return fmt.Errorf("failed to migrate x/%s from version 1 to 2: %v", group.ModuleName, err)
}
return nil
}
// ConsensusVersion implements AppModule/ConsensusVersion.

View File

@ -118,18 +118,18 @@ func (am AppModule) RegisterServices(registrar grpc.ServiceRegistrar) error {
return nil
}
func (am AppModule) RegisterMigrations(mh appmodule.MigrationRegistrar) error {
func (am AppModule) RegisterMigrations(mr appmodule.MigrationRegistrar) error {
m := keeper.NewMigrator(am.keeper)
if err := mh.Register(types.ModuleName, 1, m.Migrate1to2); err != nil {
if err := mr.Register(types.ModuleName, 1, m.Migrate1to2); err != nil {
return fmt.Errorf("failed to migrate x/%s from version 1 to 2: %w", types.ModuleName, err)
}
if err := mh.Register(types.ModuleName, 2, m.Migrate2to3); err != nil {
if err := mr.Register(types.ModuleName, 2, m.Migrate2to3); err != nil {
return fmt.Errorf("failed to migrate x/%s from version 2 to 3: %w", types.ModuleName, err)
}
if err := mh.Register(types.ModuleName, 3, m.Migrate3to4); err != nil {
if err := mr.Register(types.ModuleName, 3, m.Migrate3to4); err != nil {
return fmt.Errorf("failed to migrate x/%s from version 3 to 4: %w", types.ModuleName, err)
}