mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-03 09:56:38 -05:00
Merge bitcoin/bitcoin#27803: Fuzz: Mitigate timeout in CalculateTotalBumpFees
5d718f6913
Mitigate timeout in CalculateTotalBumpFees (Murch) Pull request description: The slow fuzz seed described in #27799 was just slower than expected, not an endless loop. Ensuring that every anscestor is only processed once speeds up the termination of the graph traversal. Fixes #27799 ACKs for top commit: glozow: ACK5d718f6913
Tree-SHA512: f3c7cd2ef6716332136c75b43f6d54ce920be6f546a11bbf92b1fd65575607c42cc24b319691d86d0db038335636ba12b6387383a184f1589a8d71d1180f194f
This commit is contained in:
commit
6a560aceb7
1 changed files with 6 additions and 1 deletions
|
@ -346,15 +346,20 @@ std::optional<CAmount> MiniMiner::CalculateTotalBumpFees(const CFeeRate& target_
|
||||||
to_process.insert(iter);
|
to_process.insert(iter);
|
||||||
ancestors.insert(iter);
|
ancestors.insert(iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::set<uint256> has_been_processed;
|
||||||
while (!to_process.empty()) {
|
while (!to_process.empty()) {
|
||||||
auto iter = to_process.begin();
|
auto iter = to_process.begin();
|
||||||
const CTransaction& tx = (*iter)->second.GetTx();
|
const CTransaction& tx = (*iter)->second.GetTx();
|
||||||
for (const auto& input : tx.vin) {
|
for (const auto& input : tx.vin) {
|
||||||
if (auto parent_it{m_entries_by_txid.find(input.prevout.hash)}; parent_it != m_entries_by_txid.end()) {
|
if (auto parent_it{m_entries_by_txid.find(input.prevout.hash)}; parent_it != m_entries_by_txid.end()) {
|
||||||
to_process.insert(parent_it);
|
if (!has_been_processed.count(input.prevout.hash)) {
|
||||||
|
to_process.insert(parent_it);
|
||||||
|
}
|
||||||
ancestors.insert(parent_it);
|
ancestors.insert(parent_it);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
has_been_processed.insert(tx.GetHash());
|
||||||
to_process.erase(iter);
|
to_process.erase(iter);
|
||||||
}
|
}
|
||||||
const auto ancestor_package_size = std::accumulate(ancestors.cbegin(), ancestors.cend(), int64_t{0},
|
const auto ancestor_package_size = std::accumulate(ancestors.cbegin(), ancestors.cend(), int64_t{0},
|
||||||
|
|
Loading…
Add table
Reference in a new issue