From 45e05c1a997e6e5bf5e864249892c7b4316e86c8 Mon Sep 17 00:00:00 2001 From: Facundo Medica <14063057+facundomedica@users.noreply.github.com> Date: Fri, 2 Aug 2024 12:50:19 +0200 Subject: [PATCH] fix(baseapp): return events from preblocker in FinalizeBlockResponse (#21159) (cherry picked from commit c312d99ea0b8402ed74bf302b2da8b103cdb3b15) --- CHANGELOG.md | 1 + baseapp/abci.go | 1 + baseapp/abci_test.go | 5 ++++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 961de76b57ec..198363d6b8ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -108,6 +108,7 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i ### Bug Fixes +* (baseapp) [#21159](https://github.com/cosmos/cosmos-sdk/pull/21159) Return PreBlocker events in FinalizeBlockResponse. * (baseapp) [#18727](https://github.com/cosmos/cosmos-sdk/pull/18727) Ensure that `BaseApp.Init` firstly returns any errors from a nil commit multistore instead of panicking on nil dereferencing and before sealing the app. * (client) [#18622](https://github.com/cosmos/cosmos-sdk/pull/18622) Fixed a potential under/overflow from `uint64->int64` when computing gas fees as a LegacyDec. * (client/keys) [#18562](https://github.com/cosmos/cosmos-sdk/pull/18562) `keys delete` won't terminate when a key is not found. diff --git a/baseapp/abci.go b/baseapp/abci.go index 513d8667fc76..e7724182e0e4 100644 --- a/baseapp/abci.go +++ b/baseapp/abci.go @@ -789,6 +789,7 @@ func (app *BaseApp) internalFinalizeBlock(ctx context.Context, req *abci.Finaliz if err := app.preBlock(req); err != nil { return nil, err } + events = append(events, app.finalizeBlockState.ctx.EventManager().ABCIEvents()...) beginBlock, err := app.beginBlock(req) if err != nil { diff --git a/baseapp/abci_test.go b/baseapp/abci_test.go index c14f588eb554..f935da1b318e 100644 --- a/baseapp/abci_test.go +++ b/baseapp/abci_test.go @@ -2062,13 +2062,16 @@ func TestBaseApp_PreBlocker(t *testing.T) { wasHookCalled := false app.SetPreBlocker(func(ctx sdk.Context, req *abci.FinalizeBlockRequest) error { wasHookCalled = true + ctx.EventManager().EmitEvent(sdk.NewEvent("preblockertest", sdk.NewAttribute("height", fmt.Sprintf("%d", req.Height)))) return nil }) app.Seal() - _, err = app.FinalizeBlock(&abci.FinalizeBlockRequest{Height: 1}) + res, err := app.FinalizeBlock(&abci.FinalizeBlockRequest{Height: 1}) require.NoError(t, err) require.Equal(t, true, wasHookCalled) + require.Len(t, res.Events, 1) + require.Equal(t, "preblockertest", res.Events[0].Type) // Now try erroring app = baseapp.NewBaseApp(name, logger, db, nil)