fix(baseapp): return events from preblocker in FinalizeBlockResponse (#21159)

This commit is contained in:
Facundo Medica 2024-08-02 12:50:19 +02:00 committed by GitHub
parent 04bedcd32b
commit c312d99ea0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 6 additions and 1 deletions

View File

@ -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.

View File

@ -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 {

View File

@ -2298,13 +2298,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)