aboutsummaryrefslogtreecommitdiff
path: root/src/policy/fees.cpp
diff options
context:
space:
mode:
authorSuhas Daftuar <sdaftuar@gmail.com>2018-01-19 10:38:58 -0500
committerSuhas Daftuar <sdaftuar@gmail.com>2018-01-25 18:02:24 -0500
commite868b22917aee4c888f843bd86a2bf8ea29530eb (patch)
treec559264548ee7734ad583af45329688fbf88e21e /src/policy/fees.cpp
parent09754063e0605429680f4c58a85967777ad87cc1 (diff)
fee estimator: avoid sorting mempool on shutdown
Diffstat (limited to 'src/policy/fees.cpp')
-rw-r--r--src/policy/fees.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/policy/fees.cpp b/src/policy/fees.cpp
index 9142f3706d..79b450e3e6 100644
--- a/src/policy/fees.cpp
+++ b/src/policy/fees.cpp
@@ -981,16 +981,17 @@ bool CBlockPolicyEstimator::Read(CAutoFile& filein)
return true;
}
-void CBlockPolicyEstimator::FlushUnconfirmed(CTxMemPool& pool) {
+void CBlockPolicyEstimator::FlushUnconfirmed() {
int64_t startclear = GetTimeMicros();
- std::vector<uint256> txids;
- pool.queryHashes(txids);
LOCK(cs_feeEstimator);
- for (auto& txid : txids) {
- removeTx(txid, false);
+ size_t num_entries = mapMemPoolTxs.size();
+ // Remove every entry in mapMemPoolTxs
+ while (!mapMemPoolTxs.empty()) {
+ auto mi = mapMemPoolTxs.begin();
+ removeTx(mi->first, false); // this calls erase() on mapMemPoolTxs
}
int64_t endclear = GetTimeMicros();
- LogPrint(BCLog::ESTIMATEFEE, "Recorded %u unconfirmed txs from mempool in %gs\n",txids.size(), (endclear - startclear)*0.000001);
+ LogPrint(BCLog::ESTIMATEFEE, "Recorded %u unconfirmed txs from mempool in %gs\n", num_entries, (endclear - startclear)*0.000001);
}
FeeFilterRounder::FeeFilterRounder(const CFeeRate& minIncrementalFee)