mirror of
https://github.com/bitcoin/bitcoin.git
synced 2024-11-20 10:38:42 +01:00
Rename CTxMemPool::remove -> removeRecursive
remove is no longer called non-recursively, so simplify the logic and eliminate an unnecessary parameter
This commit is contained in:
parent
7659438a63
commit
5de2baa138
@ -2502,7 +2502,7 @@ bool static DisconnectTip(CValidationState& state, const Consensus::Params& cons
|
|||||||
list<CTransaction> removed;
|
list<CTransaction> removed;
|
||||||
CValidationState stateDummy;
|
CValidationState stateDummy;
|
||||||
if (tx.IsCoinBase() || !AcceptToMemoryPool(mempool, stateDummy, tx, false, NULL, true)) {
|
if (tx.IsCoinBase() || !AcceptToMemoryPool(mempool, stateDummy, tx, false, NULL, true)) {
|
||||||
mempool.remove(tx, removed, true);
|
mempool.removeRecursive(tx, removed);
|
||||||
} else if (mempool.exists(tx.GetHash())) {
|
} else if (mempool.exists(tx.GetHash())) {
|
||||||
vHashUpdate.push_back(tx.GetHash());
|
vHashUpdate.push_back(tx.GetHash());
|
||||||
}
|
}
|
||||||
|
@ -57,12 +57,12 @@ BOOST_AUTO_TEST_CASE(MempoolRemoveTest)
|
|||||||
std::list<CTransaction> removed;
|
std::list<CTransaction> removed;
|
||||||
|
|
||||||
// Nothing in pool, remove should do nothing:
|
// Nothing in pool, remove should do nothing:
|
||||||
testPool.remove(txParent, removed, true);
|
testPool.removeRecursive(txParent, removed);
|
||||||
BOOST_CHECK_EQUAL(removed.size(), 0);
|
BOOST_CHECK_EQUAL(removed.size(), 0);
|
||||||
|
|
||||||
// Just the parent:
|
// Just the parent:
|
||||||
testPool.addUnchecked(txParent.GetHash(), entry.FromTx(txParent));
|
testPool.addUnchecked(txParent.GetHash(), entry.FromTx(txParent));
|
||||||
testPool.remove(txParent, removed, true);
|
testPool.removeRecursive(txParent, removed);
|
||||||
BOOST_CHECK_EQUAL(removed.size(), 1);
|
BOOST_CHECK_EQUAL(removed.size(), 1);
|
||||||
removed.clear();
|
removed.clear();
|
||||||
|
|
||||||
@ -74,16 +74,16 @@ BOOST_AUTO_TEST_CASE(MempoolRemoveTest)
|
|||||||
testPool.addUnchecked(txGrandChild[i].GetHash(), entry.FromTx(txGrandChild[i]));
|
testPool.addUnchecked(txGrandChild[i].GetHash(), entry.FromTx(txGrandChild[i]));
|
||||||
}
|
}
|
||||||
// Remove Child[0], GrandChild[0] should be removed:
|
// Remove Child[0], GrandChild[0] should be removed:
|
||||||
testPool.remove(txChild[0], removed, true);
|
testPool.removeRecursive(txChild[0], removed);
|
||||||
BOOST_CHECK_EQUAL(removed.size(), 2);
|
BOOST_CHECK_EQUAL(removed.size(), 2);
|
||||||
removed.clear();
|
removed.clear();
|
||||||
// ... make sure grandchild and child are gone:
|
// ... make sure grandchild and child are gone:
|
||||||
testPool.remove(txGrandChild[0], removed, true);
|
testPool.removeRecursive(txGrandChild[0], removed);
|
||||||
BOOST_CHECK_EQUAL(removed.size(), 0);
|
BOOST_CHECK_EQUAL(removed.size(), 0);
|
||||||
testPool.remove(txChild[0], removed, true);
|
testPool.removeRecursive(txChild[0], removed);
|
||||||
BOOST_CHECK_EQUAL(removed.size(), 0);
|
BOOST_CHECK_EQUAL(removed.size(), 0);
|
||||||
// Remove parent, all children/grandchildren should go:
|
// Remove parent, all children/grandchildren should go:
|
||||||
testPool.remove(txParent, removed, true);
|
testPool.removeRecursive(txParent, removed);
|
||||||
BOOST_CHECK_EQUAL(removed.size(), 5);
|
BOOST_CHECK_EQUAL(removed.size(), 5);
|
||||||
BOOST_CHECK_EQUAL(testPool.size(), 0);
|
BOOST_CHECK_EQUAL(testPool.size(), 0);
|
||||||
removed.clear();
|
removed.clear();
|
||||||
@ -96,7 +96,7 @@ BOOST_AUTO_TEST_CASE(MempoolRemoveTest)
|
|||||||
}
|
}
|
||||||
// Now remove the parent, as might happen if a block-re-org occurs but the parent cannot be
|
// Now remove the parent, as might happen if a block-re-org occurs but the parent cannot be
|
||||||
// put into the mempool (maybe because it is non-standard):
|
// put into the mempool (maybe because it is non-standard):
|
||||||
testPool.remove(txParent, removed, true);
|
testPool.removeRecursive(txParent, removed);
|
||||||
BOOST_CHECK_EQUAL(removed.size(), 6);
|
BOOST_CHECK_EQUAL(removed.size(), 6);
|
||||||
BOOST_CHECK_EQUAL(testPool.size(), 0);
|
BOOST_CHECK_EQUAL(testPool.size(), 0);
|
||||||
removed.clear();
|
removed.clear();
|
||||||
@ -281,11 +281,11 @@ BOOST_AUTO_TEST_CASE(MempoolIndexingTest)
|
|||||||
|
|
||||||
// Now try removing tx10 and verify the sort order returns to normal
|
// Now try removing tx10 and verify the sort order returns to normal
|
||||||
std::list<CTransaction> removed;
|
std::list<CTransaction> removed;
|
||||||
pool.remove(pool.mapTx.find(tx10.GetHash())->GetTx(), removed, true);
|
pool.removeRecursive(pool.mapTx.find(tx10.GetHash())->GetTx(), removed);
|
||||||
CheckSort<descendant_score>(pool, snapshotOrder);
|
CheckSort<descendant_score>(pool, snapshotOrder);
|
||||||
|
|
||||||
pool.remove(pool.mapTx.find(tx9.GetHash())->GetTx(), removed, true);
|
pool.removeRecursive(pool.mapTx.find(tx9.GetHash())->GetTx(), removed);
|
||||||
pool.remove(pool.mapTx.find(tx8.GetHash())->GetTx(), removed, true);
|
pool.removeRecursive(pool.mapTx.find(tx8.GetHash())->GetTx(), removed);
|
||||||
/* Now check the sort on the mining score index.
|
/* Now check the sort on the mining score index.
|
||||||
* Final order should be:
|
* Final order should be:
|
||||||
*
|
*
|
||||||
|
@ -461,7 +461,7 @@ void CTxMemPool::CalculateDescendants(txiter entryit, setEntries &setDescendants
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CTxMemPool::remove(const CTransaction &origTx, std::list<CTransaction>& removed, bool fRecursive)
|
void CTxMemPool::removeRecursive(const CTransaction &origTx, std::list<CTransaction>& removed)
|
||||||
{
|
{
|
||||||
// Remove transaction from memory pool
|
// Remove transaction from memory pool
|
||||||
{
|
{
|
||||||
@ -470,8 +470,8 @@ void CTxMemPool::remove(const CTransaction &origTx, std::list<CTransaction>& rem
|
|||||||
txiter origit = mapTx.find(origTx.GetHash());
|
txiter origit = mapTx.find(origTx.GetHash());
|
||||||
if (origit != mapTx.end()) {
|
if (origit != mapTx.end()) {
|
||||||
txToRemove.insert(origit);
|
txToRemove.insert(origit);
|
||||||
} else if (fRecursive) {
|
} else {
|
||||||
// If recursively removing but origTx isn't in the mempool
|
// When recursively removing but origTx isn't in the mempool
|
||||||
// be sure to remove any children that are in the pool. This can
|
// be sure to remove any children that are in the pool. This can
|
||||||
// happen during chain re-orgs if origTx isn't re-accepted into
|
// happen during chain re-orgs if origTx isn't re-accepted into
|
||||||
// the mempool for any reason.
|
// the mempool for any reason.
|
||||||
@ -485,12 +485,8 @@ void CTxMemPool::remove(const CTransaction &origTx, std::list<CTransaction>& rem
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
setEntries setAllRemoves;
|
setEntries setAllRemoves;
|
||||||
if (fRecursive) {
|
BOOST_FOREACH(txiter it, txToRemove) {
|
||||||
BOOST_FOREACH(txiter it, txToRemove) {
|
CalculateDescendants(it, setAllRemoves);
|
||||||
CalculateDescendants(it, setAllRemoves);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
setAllRemoves.swap(txToRemove);
|
|
||||||
}
|
}
|
||||||
BOOST_FOREACH(txiter it, setAllRemoves) {
|
BOOST_FOREACH(txiter it, setAllRemoves) {
|
||||||
removed.push_back(it->GetTx());
|
removed.push_back(it->GetTx());
|
||||||
@ -524,7 +520,7 @@ void CTxMemPool::removeForReorg(const CCoinsViewCache *pcoins, unsigned int nMem
|
|||||||
}
|
}
|
||||||
BOOST_FOREACH(const CTransaction& tx, transactionsToRemove) {
|
BOOST_FOREACH(const CTransaction& tx, transactionsToRemove) {
|
||||||
list<CTransaction> removed;
|
list<CTransaction> removed;
|
||||||
remove(tx, removed, true);
|
removeRecursive(tx, removed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -539,7 +535,7 @@ void CTxMemPool::removeConflicts(const CTransaction &tx, std::list<CTransaction>
|
|||||||
const CTransaction &txConflict = *it->second.ptx;
|
const CTransaction &txConflict = *it->second.ptx;
|
||||||
if (txConflict != tx)
|
if (txConflict != tx)
|
||||||
{
|
{
|
||||||
remove(txConflict, removed, true);
|
removeRecursive(txConflict, removed);
|
||||||
ClearPrioritisation(txConflict.GetHash());
|
ClearPrioritisation(txConflict.GetHash());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -428,7 +428,7 @@ public:
|
|||||||
bool addUnchecked(const uint256& hash, const CTxMemPoolEntry &entry, bool fCurrentEstimate = true);
|
bool addUnchecked(const uint256& hash, const CTxMemPoolEntry &entry, bool fCurrentEstimate = true);
|
||||||
bool addUnchecked(const uint256& hash, const CTxMemPoolEntry &entry, setEntries &setAncestors, bool fCurrentEstimate = true);
|
bool addUnchecked(const uint256& hash, const CTxMemPoolEntry &entry, setEntries &setAncestors, bool fCurrentEstimate = true);
|
||||||
|
|
||||||
void remove(const CTransaction &tx, std::list<CTransaction>& removed, bool fRecursive = false);
|
void removeRecursive(const CTransaction &tx, std::list<CTransaction>& removed);
|
||||||
void removeForReorg(const CCoinsViewCache *pcoins, unsigned int nMemPoolHeight, int flags);
|
void removeForReorg(const CCoinsViewCache *pcoins, unsigned int nMemPoolHeight, int flags);
|
||||||
void removeConflicts(const CTransaction &tx, std::list<CTransaction>& removed);
|
void removeConflicts(const CTransaction &tx, std::list<CTransaction>& removed);
|
||||||
void removeForBlock(const std::vector<CTransaction>& vtx, unsigned int nBlockHeight,
|
void removeForBlock(const std::vector<CTransaction>& vtx, unsigned int nBlockHeight,
|
||||||
|
Loading…
Reference in New Issue
Block a user