Page MenuHomePhabricator

log: mempool: log removal reason in validation interface
ClosedPublic

Authored by PiRK on Apr 30 2024, 09:45.

Details

Reviewers
Fabien
Group Reviewers
Restricted Project
Commits
rABC33fc32118f77: log: mempool: log removal reason in validation interface
Summary

Currently the exact reason a transaction is removed from the mempool isn't
logged. It is sometimes detectable from context, but adding the reason to
the validation interface logs (where it is already passed) seems like an easy
way to disambiguate.

For example, in the case of mempool expiry, the logs look like this:

[validationinterface.cpp:220] [TransactionRemovedFromMempool] [validation] Enqueuing TransactionRemovedFromMempool: txid=<txid>
[txmempool.cpp:1050] [RemoveUnbroadcastTx] [mempool] Removed <txid> from set of unbroadcast txns before confirmation that txn was sent out
[validationinterface.cpp:220] [operator()] [validation] TransactionRemovedFromMempool: txid=<txid>
[validation.cpp:267] [LimitSize] [mempool] Expired 1 transactions from the memory pool

There is no context-free way to know $txid was evicted on the basis of expiry.
This change will make that case (and probably others) clear.

This is a backport of core#26419
Depends on D16084

Test Plan

ninja all check-all