Public mempool removal methods Assume() no changeset is outstanding

While a changeset is outstanding, removing transaction directly from the
mempool will invalidate the changeset state, so this is not permitted.
This commit is contained in:
Suhas Daftuar
2024-10-18 15:36:36 +01:00
committed by Suhas Daftuar
parent 2b30f4d36c
commit b447416fdd
2 changed files with 10 additions and 0 deletions

View File

@@ -1820,6 +1820,11 @@ PackageMempoolAcceptResult MemPoolAccept::AcceptPackage(const Package& package,
AcceptSubPackage(txns_package_eval, args);
PackageValidationState& package_state_final = multi_submission_result.m_state;
// This is invoked by AcceptSubPackage() already, so this is just here for
// clarity (since it's not permitted to invoke LimitMempoolSize() while a
// changeset is outstanding).
ClearSubPackageState();
// Make sure we haven't exceeded max mempool size.
// Package transactions that were submitted to mempool or already in mempool may be evicted.
LimitMempoolSize(m_pool, m_active_chainstate.CoinsTip());