Skip to content

Commit 5bb5ad1

Browse files
committed
replace Remove with RemoveWithReason
1 parent dced392 commit 5bb5ad1

File tree

3 files changed

+40
-13
lines changed

3 files changed

+40
-13
lines changed

baseapp/abci_utils.go

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -285,12 +285,19 @@ func (h *DefaultProposalHandler) PrepareProposalHandler() sdk.PrepareProposalHan
285285
return &abci.ResponsePrepareProposal{Txs: h.txSelector.SelectedTxs(ctx)}, nil
286286
}
287287

288-
selectedTxsSignersSeqs := make(map[string]uint64)
288+
type invalidTx struct {
289+
tx sdk.Tx
290+
err error
291+
}
292+
289293
var (
290-
resError error
291-
selectedTxsNums int
292-
invalidTxs []sdk.Tx // invalid txs to be removed out of the loop to avoid dead lock
294+
// invalid txs to be removed out of the loop to avoid dead lock
295+
invalidTxs []invalidTx
296+
resError error
297+
selectedTxsNums int
298+
selectedTxsSignersSeqs = make(map[string]uint64)
293299
)
300+
294301
mempool.SelectBy(ctx, h.mempool, req.Txs, func(memTx sdk.Tx) bool {
295302
unorderedTx, ok := memTx.(sdk.TxWithUnordered)
296303
isUnordered := ok && unorderedTx.GetUnordered()
@@ -335,7 +342,7 @@ func (h *DefaultProposalHandler) PrepareProposalHandler() sdk.PrepareProposalHan
335342
// check again.
336343
txBz, err := h.txVerifier.PrepareProposalVerifyTx(memTx)
337344
if err != nil {
338-
invalidTxs = append(invalidTxs, memTx)
345+
invalidTxs = append(invalidTxs, invalidTx{tx: memTx, err: err})
339346
} else {
340347
stop := h.txSelector.SelectTxForProposal(ctx, uint64(req.MaxTxBytes), maxBlockGas, memTx, txBz)
341348
if stop {
@@ -370,8 +377,13 @@ func (h *DefaultProposalHandler) PrepareProposalHandler() sdk.PrepareProposalHan
370377
return nil, resError
371378
}
372379

373-
for _, tx := range invalidTxs {
374-
err := h.mempool.Remove(tx)
380+
for _, invalidTx := range invalidTxs {
381+
reason := mempool.RemoveReason{
382+
Caller: "prepare_proposal.remove_invalid_tx",
383+
Error: invalidTx.err,
384+
}
385+
386+
err := mempool.RemoveWithReason(ctx, h.mempool, invalidTx.tx, reason)
375387
if err != nil && !errors.Is(err, mempool.ErrTxNotFound) {
376388
return nil, err
377389
}

baseapp/baseapp.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -881,10 +881,16 @@ func (app *BaseApp) RunTx(mode sdk.ExecMode, txBytes []byte, tx sdk.Tx, txIndex
881881
if err != nil {
882882
if mode == execModeReCheck {
883883
// if the ante handler fails on recheck, we want to remove the tx from the mempool
884-
if mempoolErr := app.mempool.Remove(tx); mempoolErr != nil {
885-
return gInfo, nil, anteEvents, errors.Join(err, mempoolErr)
884+
errMempool := mempool.RemoveWithReason(ctx, app.mempool, tx, mempool.RemoveReason{
885+
Caller: "run_tx.recheck",
886+
Error: err,
887+
})
888+
889+
if errMempool != nil {
890+
return gInfo, nil, anteEvents, errors.Join(err, errMempool)
886891
}
887892
}
893+
888894
return gInfo, nil, nil, err
889895
}
890896

@@ -899,10 +905,9 @@ func (app *BaseApp) RunTx(mode sdk.ExecMode, txBytes []byte, tx sdk.Tx, txIndex
899905
return gInfo, nil, anteEvents, err
900906
}
901907
case execModeFinalize:
902-
err = app.mempool.Remove(tx)
908+
err = mempool.RemoveWithReason(ctx, app.mempool, tx, mempool.RemoveReason{Caller: "run_tx.finalize"})
903909
if err != nil && !errors.Is(err, mempool.ErrTxNotFound) {
904-
return gInfo, nil, anteEvents,
905-
fmt.Errorf("failed to remove tx from mempool: %w", err)
910+
return gInfo, nil, anteEvents, fmt.Errorf("failed to remove tx from mempool: %w", err)
906911
}
907912
}
908913

types/mempool/mempool.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ type Mempool interface {
2626

2727
// ExtMempool is an extension of Mempool interface introduced in v0.50
2828
// for not be breaking in a patch release.
29-
// In v0.52+, this interface will be merged into Mempool interface.
29+
// In v0.54+, this function is removed and RemoveWithReason is merged into Mempool interface.
3030
type ExtMempool interface {
3131
Mempool
3232

@@ -78,3 +78,13 @@ func SelectBy(ctx context.Context, mempool Mempool, txs [][]byte, callback func(
7878
iter = iter.Next()
7979
}
8080
}
81+
82+
// RemoveWithReason is compatible with old interface to avoid breaking api.
83+
// In v0.54+, this function is removed and RemoveWithReason is merged into Mempool interface.
84+
func RemoveWithReason(ctx context.Context, mempool Mempool, tx sdk.Tx, reason RemoveReason) error {
85+
if ext, ok := mempool.(ExtMempool); ok {
86+
return ext.RemoveWithReason(ctx, tx, reason)
87+
}
88+
89+
return mempool.Remove(tx)
90+
}

0 commit comments

Comments
 (0)