diff options
author | Anthony Towns <aj@erisian.com.au> | 2021-05-19 21:24:33 +1000 |
---|---|---|
committer | Anthony Towns <aj@erisian.com.au> | 2021-05-21 12:14:01 +1000 |
commit | 793b2682841b0bdd7eb93163e34728765cfe52b2 (patch) | |
tree | 2859d80d60f47bbc9886c0d36dc7170fa864ab00 /src | |
parent | ea8b2e8e127b5a27424c1c08a1352ec1c9382c96 (diff) |
txmempool: add thread safety annotations
Diffstat (limited to 'src')
-rw-r--r-- | src/test/fuzz/tx_pool.cpp | 3 | ||||
-rw-r--r-- | src/txmempool.h | 12 |
2 files changed, 8 insertions, 7 deletions
diff --git a/src/test/fuzz/tx_pool.cpp b/src/test/fuzz/tx_pool.cpp index 068e207118..ad11f2c5f2 100644 --- a/src/test/fuzz/tx_pool.cpp +++ b/src/test/fuzz/tx_pool.cpp @@ -21,8 +21,9 @@ std::vector<COutPoint> g_outpoints_coinbase_init_mature; std::vector<COutPoint> g_outpoints_coinbase_init_immature; struct MockedTxPool : public CTxMemPool { - void RollingFeeUpdate() + void RollingFeeUpdate() EXCLUSIVE_LOCKS_REQUIRED(!cs) { + LOCK(cs); lastRollingFeeUpdate = GetTime(); blockSinceLastRollingFeeBump = true; } diff --git a/src/txmempool.h b/src/txmempool.h index c3a9bd851d..594b4981f6 100644 --- a/src/txmempool.h +++ b/src/txmempool.h @@ -479,21 +479,21 @@ class CTxMemPool protected: const int m_check_ratio; //!< Value n means that 1 times in n we check. std::atomic<unsigned int> nTransactionsUpdated{0}; //!< Used by getblocktemplate to trigger CreateNewBlock() invocation - CBlockPolicyEstimator* minerPolicyEstimator; + CBlockPolicyEstimator* const minerPolicyEstimator; uint64_t totalTxSize GUARDED_BY(cs); //!< sum of all mempool tx's virtual sizes. Differs from serialized tx size since witness data is discounted. Defined in BIP 141. CAmount m_total_fee GUARDED_BY(cs); //!< sum of all mempool tx's fees (NOT modified fee) uint64_t cachedInnerUsage GUARDED_BY(cs); //!< sum of dynamic memory usage of all the map elements (NOT the maps themselves) - mutable int64_t lastRollingFeeUpdate; - mutable bool blockSinceLastRollingFeeBump; - mutable double rollingMinimumFeeRate; //!< minimum fee to get into the pool, decreases exponentially + mutable int64_t lastRollingFeeUpdate GUARDED_BY(cs); + mutable bool blockSinceLastRollingFeeBump GUARDED_BY(cs); + mutable double rollingMinimumFeeRate GUARDED_BY(cs); //!< minimum fee to get into the pool, decreases exponentially mutable Epoch m_epoch GUARDED_BY(cs); // In-memory counter for external mempool tracking purposes. // This number is incremented once every time a transaction // is added or removed from the mempool for any reason. - mutable uint64_t m_sequence_number{1}; + mutable uint64_t m_sequence_number GUARDED_BY(cs){1}; void trackPackageRemoved(const CFeeRate& rate) EXCLUSIVE_LOCKS_REQUIRED(cs); @@ -587,7 +587,7 @@ private: public: indirectmap<COutPoint, const CTransaction*> mapNextTx GUARDED_BY(cs); - std::map<uint256, CAmount> mapDeltas; + std::map<uint256, CAmount> mapDeltas GUARDED_BY(cs); /** Create a new CTxMemPool. * Sanity checks will be off by default for performance, because otherwise |