diff --git a/src/txmempool.cpp b/src/txmempool.cpp index 597d4864094..5197fb012df 100644 --- a/src/txmempool.cpp +++ b/src/txmempool.cpp @@ -211,6 +211,7 @@ void CTxMemPool::Apply(ChangeSet* changeset) addNewTransaction(it); } + m_txgraph->DoWork(POST_CHANGE_WORK); } void CTxMemPool::addNewTransaction(CTxMemPool::txiter newit) @@ -357,6 +358,7 @@ void CTxMemPool::removeForReorg(CChain& chain, std::function check for (indexed_transaction_set::const_iterator it = mapTx.begin(); it != mapTx.end(); it++) { assert(TestLockPointValidity(chain, it->GetLockPoints())); } + m_txgraph->DoWork(POST_CHANGE_WORK); } void CTxMemPool::removeConflicts(const CTransaction &tx) @@ -401,6 +403,7 @@ void CTxMemPool::removeForBlock(const std::vector& vtx, unsigne } lastRollingFeeUpdate = GetTime(); blockSinceLastRollingFeeBump = true; + m_txgraph->DoWork(POST_CHANGE_WORK); } void CTxMemPool::check(const CCoinsViewCache& active_coins_tip, int64_t spendheight) const diff --git a/src/txmempool.h b/src/txmempool.h index e2020b65260..a3487c04ea4 100644 --- a/src/txmempool.h +++ b/src/txmempool.h @@ -55,6 +55,10 @@ static const uint32_t MEMPOOL_HEIGHT = 0x7FFFFFFF; * iterations. */ static constexpr uint64_t ACCEPTABLE_ITERS = 1'700; +/** How much work we ask TxGraph to do after a mempool change occurs (either + * due to a changeset being applied, a new block being found, or a reorg). */ +static constexpr uint64_t POST_CHANGE_WORK = 5 * ACCEPTABLE_ITERS; + /** * Test whether the LockPoints height and time are still valid on the current chain */