diff --git a/baseapp/abci.go b/baseapp/abci.go index e7724182e0..d2d87a5cf5 100644 --- a/baseapp/abci.go +++ b/baseapp/abci.go @@ -786,10 +786,11 @@ func (app *BaseApp) internalFinalizeBlock(ctx context.Context, req *abci.Finaliz WithHeaderHash(req.Hash)) } - if err := app.preBlock(req); err != nil { + preblockEvents, err := app.preBlock(req) + if err != nil { return nil, err } - events = append(events, app.finalizeBlockState.ctx.EventManager().ABCIEvents()...) + events = append(events, preblockEvents...) beginBlock, err := app.beginBlock(req) if err != nil { diff --git a/baseapp/baseapp.go b/baseapp/baseapp.go index e193bd86d3..a6a60a6d37 100644 --- a/baseapp/baseapp.go +++ b/baseapp/baseapp.go @@ -709,11 +709,12 @@ func (app *BaseApp) cacheTxContext(ctx sdk.Context, txBytes []byte) (sdk.Context return ctx.WithMultiStore(msCache), msCache } -func (app *BaseApp) preBlock(req *abci.FinalizeBlockRequest) error { +func (app *BaseApp) preBlock(req *abci.FinalizeBlockRequest) ([]abci.Event, error) { + var events []abci.Event if app.preBlocker != nil { ctx := app.finalizeBlockState.Context() if err := app.preBlocker(ctx, req); err != nil { - return err + return nil, err } // ConsensusParams can change in preblocker, so we need to // write the consensus parameters in store to context @@ -722,8 +723,9 @@ func (app *BaseApp) preBlock(req *abci.FinalizeBlockRequest) error { gasMeter := app.getBlockGasMeter(ctx) ctx = ctx.WithBlockGasMeter(gasMeter) app.finalizeBlockState.SetContext(ctx) + events = ctx.EventManager().ABCIEvents() } - return nil + return events, nil } func (app *BaseApp) beginBlock(_ *abci.FinalizeBlockRequest) (sdk.BeginBlock, error) {