From 34095f00083889e4c6351f500ddbb048acb09033 Mon Sep 17 00:00:00 2001 From: zsystm <124245155+zsystm@users.noreply.github.com> Date: Tue, 1 Oct 2024 09:22:55 +0900 Subject: [PATCH] fix(evmengine): nil panic with optimistic build enabled (#128) cmtAPI is lazily set, so during replyBlocks it is nil. --- client/x/evmengine/keeper/keeper.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/client/x/evmengine/keeper/keeper.go b/client/x/evmengine/keeper/keeper.go index f3b3086c..41e265a3 100644 --- a/client/x/evmengine/keeper/keeper.go +++ b/client/x/evmengine/keeper/keeper.go @@ -172,6 +172,12 @@ func (k *Keeper) parseAndVerifyProposedPayload(ctx context.Context, msg *types.M // // Note that the validator set can change, so this is an optimistic check. func (k *Keeper) isNextProposer(ctx context.Context, currentProposer []byte, currentHeight int64) (bool, error) { + // PostFinalize can be called during block replay (performed in newCometNode), + // but cmtAPI is set only after newCometNode completes (see app.SetCometAPI), so a nil check is necessary. + if k.cmtAPI == nil { + return false, nil + } + valset, ok, err := k.cmtAPI.Validators(ctx, currentHeight) if err != nil { return false, err