diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2015-10-02 14:43:30 -0700 |
---|---|---|
committer | Matt Corallo <git@bluematt.me> | 2015-10-13 00:44:03 -0700 |
commit | 49b6fd5663dfe081d127cd1eb11407c4d3eaf93d (patch) | |
tree | 30caec98dd3dc4fae4aef494ff04b0df81778ca4 /src/txmempool.h | |
parent | 78b82f4a16d8aad15ef397b1a1cd075b2efc8c16 (diff) |
Add Mempool Expire function to remove old transactions
(note the 9x multiplier on (void*)'s for CTxMemPool::DynamicMemoryUsage
was accidentally introduced in 5add7a7 but should have waited for this
commit which adds the extra index)
Diffstat (limited to 'src/txmempool.h')
-rw-r--r-- | src/txmempool.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/txmempool.h b/src/txmempool.h index 2085b718e2..635b66fb85 100644 --- a/src/txmempool.h +++ b/src/txmempool.h @@ -211,9 +211,10 @@ public: * * CTxMemPool::mapTx, and CTxMemPoolEntry bookkeeping: * - * mapTx is a boost::multi_index that sorts the mempool on 2 criteria: + * mapTx is a boost::multi_index that sorts the mempool on 3 criteria: * - transaction hash * - feerate [we use max(feerate of tx, feerate of tx with all descendants)] + * - time in mempool * * Note: the term "descendant" refers to in-mempool transactions that depend on * this one, while "ancestor" refers to in-mempool transactions that a given @@ -294,6 +295,11 @@ public: boost::multi_index::ordered_non_unique< boost::multi_index::identity<CTxMemPoolEntry>, CompareTxMemPoolEntryByFee + >, + // sorted by entry time + boost::multi_index::ordered_non_unique< + boost::multi_index::identity<CTxMemPoolEntry>, + CompareTxMemPoolEntryByEntryTime > > > indexed_transaction_set; @@ -397,6 +403,9 @@ public: */ bool CalculateMemPoolAncestors(const CTxMemPoolEntry &entry, setEntries &setAncestors, uint64_t limitAncestorCount, uint64_t limitAncestorSize, uint64_t limitDescendantCount, uint64_t limitDescendantSize, std::string &errString, bool fSearchForParents = true); + /** Expire all transaction (and their dependencies) in the mempool older than time. Return the number of removed transactions. */ + int Expire(int64_t time); + unsigned long size() { LOCK(cs); |