mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-25 02:33:24 -03:00
Merge #18819: net: Replace cs_feeFilter with simple std::atomic
fad1f0fd33
net: Remove unused cs_feeFilter (MarcoFalke) Pull request description: A `RecursiveMutex` is overkill for setting or reading a plain integer. Even a `Mutex` is overkill, when a plain `std::atomic` can be used. This removes 11 lines of code. Also, it is cutting down on the number of locks put on the stack at the same time, which complicates review looking out for potential lock contention. ACKs for top commit: jnewbery: utACKfad1f0fd33
practicalswift: cr ACKfad1f0fd33
: patch looks correct Tree-SHA512: 647f9b954fbf52e138d3e710937eb9131b390fef0deae03fd6a162d5a18b9f194010800bbddc8f89208d91be2802dff11c3884d04b3dd233865abd12aa3cde06
This commit is contained in:
commit
c4458cc3a1
3 changed files with 4 additions and 15 deletions
|
@ -592,7 +592,6 @@ void CNode::copyStats(CNodeStats &stats, const std::vector<bool> &m_asmap)
|
|||
}
|
||||
X(m_permissionFlags);
|
||||
if (m_tx_relay != nullptr) {
|
||||
LOCK(m_tx_relay->cs_feeFilter);
|
||||
stats.minFeeFilter = m_tx_relay->minFeeFilter;
|
||||
} else {
|
||||
stats.minFeeFilter = 0;
|
||||
|
|
|
@ -565,9 +565,8 @@ public:
|
|||
std::atomic<std::chrono::seconds> m_last_mempool_req{0s};
|
||||
std::chrono::microseconds nNextInvSend{0};
|
||||
|
||||
RecursiveMutex cs_feeFilter;
|
||||
// Minimum fee rate with which to filter inv's to this node
|
||||
CAmount minFeeFilter GUARDED_BY(cs_feeFilter){0};
|
||||
/** Minimum fee rate with which to filter inv's to this node */
|
||||
std::atomic<CAmount> minFeeFilter{0};
|
||||
CAmount lastSentFeeFilter{0};
|
||||
int64_t nextSendTimeFeeFilter{0};
|
||||
};
|
||||
|
|
|
@ -3712,7 +3712,6 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
|
|||
vRecv >> newFeeFilter;
|
||||
if (MoneyRange(newFeeFilter)) {
|
||||
if (pfrom.m_tx_relay != nullptr) {
|
||||
LOCK(pfrom.m_tx_relay->cs_feeFilter);
|
||||
pfrom.m_tx_relay->minFeeFilter = newFeeFilter;
|
||||
}
|
||||
LogPrint(BCLog::NET, "received: feefilter of %s from peer=%d\n", CFeeRate(newFeeFilter).ToString(), pfrom.GetId());
|
||||
|
@ -4388,11 +4387,7 @@ bool PeerManager::SendMessages(CNode* pto)
|
|||
if (fSendTrickle && pto->m_tx_relay->fSendMempool) {
|
||||
auto vtxinfo = m_mempool.infoAll();
|
||||
pto->m_tx_relay->fSendMempool = false;
|
||||
CFeeRate filterrate;
|
||||
{
|
||||
LOCK(pto->m_tx_relay->cs_feeFilter);
|
||||
filterrate = CFeeRate(pto->m_tx_relay->minFeeFilter);
|
||||
}
|
||||
const CFeeRate filterrate{pto->m_tx_relay->minFeeFilter.load()};
|
||||
|
||||
LOCK(pto->m_tx_relay->cs_filter);
|
||||
|
||||
|
@ -4426,11 +4421,7 @@ bool PeerManager::SendMessages(CNode* pto)
|
|||
for (std::set<uint256>::iterator it = pto->m_tx_relay->setInventoryTxToSend.begin(); it != pto->m_tx_relay->setInventoryTxToSend.end(); it++) {
|
||||
vInvTx.push_back(it);
|
||||
}
|
||||
CFeeRate filterrate;
|
||||
{
|
||||
LOCK(pto->m_tx_relay->cs_feeFilter);
|
||||
filterrate = CFeeRate(pto->m_tx_relay->minFeeFilter);
|
||||
}
|
||||
const CFeeRate filterrate{pto->m_tx_relay->minFeeFilter.load()};
|
||||
// Topologically and fee-rate sort the inventory we send for privacy and priority reasons.
|
||||
// A heap is used so that not all items need sorting if only a few are being sent.
|
||||
CompareInvMempoolOrder compareInvMempoolOrder(&m_mempool, state.m_wtxid_relay);
|
||||
|
|
Loading…
Add table
Reference in a new issue