From b05bb2601edbabc7bc63bd9c36ad1b81e4d526e0 Mon Sep 17 00:00:00 2001 From: Alexander Peters Date: Sat, 27 Jul 2024 20:11:24 +0200 Subject: [PATCH] fix(stf): fixes to make init genesis pass (#21088) Co-authored-by: marbar3778 --- runtime/v2/builder.go | 6 ++++-- runtime/v2/manager.go | 2 +- schema/appdata/async.go | 2 +- schema/appdata/mux_test.go | 1 + schema/module_schema_test.go | 1 + server/v2/stf/core_event_service.go | 10 ++++++---- server/v2/store/commands.go | 2 +- simapp/v2/app_di.go | 1 + 8 files changed, 16 insertions(+), 9 deletions(-) diff --git a/runtime/v2/builder.go b/runtime/v2/builder.go index a073761cbcf1..b7869fa3f0a7 100644 --- a/runtime/v2/builder.go +++ b/runtime/v2/builder.go @@ -128,8 +128,10 @@ func (a *AppBuilder[T]) Build(opts ...AppBuilderOption[T]) (*App[T], error) { home := v.GetString(FlagHome) storeOpts := rootstore.DefaultStoreOptions() - if err := v.Sub("store.options").Unmarshal(&storeOpts); err != nil { - return nil, fmt.Errorf("failed to store options: %w", err) + if s := v.Sub("store.options"); s != nil { + if err := s.Unmarshal(&storeOpts); err != nil { + return nil, fmt.Errorf("failed to store options: %w", err) + } } scRawDb, err := db.NewDB(db.DBType(v.GetString("store.app-db-backend")), "application", filepath.Join(home, "data"), nil) diff --git a/runtime/v2/manager.go b/runtime/v2/manager.go index f52cb1aeb48e..7f6d7a6d06fb 100644 --- a/runtime/v2/manager.go +++ b/runtime/v2/manager.go @@ -166,7 +166,7 @@ func (m *MM[T]) InitGenesisJSON( case appmodulev2.HasGenesis: m.logger.Debug("running initialization for module", "module", moduleName) if err := module.InitGenesis(ctx, genesisData[moduleName]); err != nil { - return err + return fmt.Errorf("init module %s: %w", moduleName, err) } case appmodulev2.HasABCIGenesis: m.logger.Debug("running initialization for module", "module", moduleName) diff --git a/schema/appdata/async.go b/schema/appdata/async.go index 0d4126ed2a03..4112ae839fe9 100644 --- a/schema/appdata/async.go +++ b/schema/appdata/async.go @@ -15,7 +15,7 @@ type AsyncListenerOptions struct { BufferSize int // DoneWaitGroup is an optional wait-group that listener goroutines will notify via Add(1) when they are started - // and Done() after they are cancelled and completed. + // and Done() after they are canceled and completed. DoneWaitGroup *sync.WaitGroup } diff --git a/schema/appdata/mux_test.go b/schema/appdata/mux_test.go index b5e3a95dd569..e5fbad0b64e1 100644 --- a/schema/appdata/mux_test.go +++ b/schema/appdata/mux_test.go @@ -119,6 +119,7 @@ func callCollector(i int, onCall func(string, int, Packet)) Listener { } func checkExpectedCallOrder(t *testing.T, actual, expected []string) { + t.Helper() if len(actual) != len(expected) { t.Fatalf("expected %d calls, got %d", len(expected), len(actual)) } diff --git a/schema/module_schema_test.go b/schema/module_schema_test.go index 454ae7430642..2e4a927acc5d 100644 --- a/schema/module_schema_test.go +++ b/schema/module_schema_test.go @@ -297,6 +297,7 @@ func TestModuleSchema_LookupType(t *testing.T) { } func exampleSchema(t *testing.T) ModuleSchema { + t.Helper() return requireModuleSchema(t, []ObjectType{ { Name: "object1", diff --git a/server/v2/stf/core_event_service.go b/server/v2/stf/core_event_service.go index 5bd94c6ea746..137f654ec78f 100644 --- a/server/v2/stf/core_event_service.go +++ b/server/v2/stf/core_event_service.go @@ -1,10 +1,12 @@ package stf import ( + "bytes" "context" "encoding/json" "slices" + "github.com/cosmos/gogoproto/jsonpb" gogoproto "github.com/cosmos/gogoproto/proto" "golang.org/x/exp/maps" @@ -55,14 +57,14 @@ func (em *eventManager) EmitNonConsensus(event gogoproto.Message) error { // TypedEventToEvent takes typed event and converts to Event object func TypedEventToEvent(tev gogoproto.Message) (event.Event, error) { evtType := gogoproto.MessageName(tev) - evtJSON, err := gogoproto.Marshal(tev) - if err != nil { + buf := new(bytes.Buffer) + jm := &jsonpb.Marshaler{OrigName: true, EmitDefaults: true, AnyResolver: nil} + if err := jm.Marshal(buf, tev); err != nil { return event.Event{}, err } var attrMap map[string]json.RawMessage - err = json.Unmarshal(evtJSON, &attrMap) - if err != nil { + if err := json.Unmarshal(buf.Bytes(), &attrMap); err != nil { return event.Event{}, err } diff --git a/server/v2/store/commands.go b/server/v2/store/commands.go index c22cd56ce372..dc44892f3b89 100644 --- a/server/v2/store/commands.go +++ b/server/v2/store/commands.go @@ -129,7 +129,7 @@ func createRootStore(cmd *cobra.Command, rootDir string, v *viper.Viper, logger } storeOpts := root.DefaultStoreOptions() - if v != nil { + if v != nil && v.Sub("store.options") != nil { if err := v.Sub("store.options").Unmarshal(&storeOpts); err != nil { return nil, 0, fmt.Errorf("failed to store options: %w", err) } diff --git a/simapp/v2/app_di.go b/simapp/v2/app_di.go index 0099f8f0f9d6..7cde4042f3c8 100644 --- a/simapp/v2/app_di.go +++ b/simapp/v2/app_di.go @@ -36,6 +36,7 @@ import ( "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/std" + _ "github.com/cosmos/cosmos-sdk/x/genutil" ) // DefaultNodeHome default home directories for the application daemon