Skip to content

Commit

Permalink
Optimization: don't add txn back to mempool after 10 invalidates
Browse files Browse the repository at this point in the history
  • Loading branch information
sipa committed Feb 28, 2019
1 parent 9ce9c37 commit 8d22041
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions src/validation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2797,6 +2797,7 @@ bool CChainState::InvalidateBlock(CValidationState& state, const CChainParams& c
{
CBlockIndex* to_mark_failed = pindex;
bool pindex_was_in_chain = false;
int disconnected = 0;

// Disconnect (descendants of) pindex, and mark them invalid.
while (true) {
Expand All @@ -2816,8 +2817,10 @@ bool CChainState::InvalidateBlock(CValidationState& state, const CChainParams& c
bool ret = DisconnectTip(state, chainparams, &disconnectpool);
// DisconnectTip will add transactions to disconnectpool.
// Adjust the mempool to be consistent with the new tip, adding
// transactions back to the mempool if disconnecting was succesful.
UpdateMempoolForReorg(disconnectpool, /* fAddToMempool = */ ret);
// transactions back to the mempool if disconnecting was succesful,
// and we're not doing a very deep invalidation (in which case
// keeping the mempool up to date is probably futile anyway).
UpdateMempoolForReorg(disconnectpool, /* fAddToMempool = */ (++disconnected <= 10) && ret);
if (!ret) return false;
assert(invalid_walk_tip->pprev == chainActive.Tip());

Expand Down

0 comments on commit 8d22041

Please sign in to comment.