Skip to content

Commit c4458cc

Browse files
committed
Merge #18819: net: Replace cs_feeFilter with simple std::atomic
fad1f0f 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: utACK fad1f0f practicalswift: cr ACK fad1f0f: patch looks correct Tree-SHA512: 647f9b954fbf52e138d3e710937eb9131b390fef0deae03fd6a162d5a18b9f194010800bbddc8f89208d91be2802dff11c3884d04b3dd233865abd12aa3cde06
2 parents 0944024 + fad1f0f commit c4458cc

File tree

3 files changed

+4
-15
lines changed

3 files changed

+4
-15
lines changed

src/net.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -592,7 +592,6 @@ void CNode::copyStats(CNodeStats &stats, const std::vector<bool> &m_asmap)
592592
}
593593
X(m_permissionFlags);
594594
if (m_tx_relay != nullptr) {
595-
LOCK(m_tx_relay->cs_feeFilter);
596595
stats.minFeeFilter = m_tx_relay->minFeeFilter;
597596
} else {
598597
stats.minFeeFilter = 0;

src/net.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -565,9 +565,8 @@ class CNode
565565
std::atomic<std::chrono::seconds> m_last_mempool_req{0s};
566566
std::chrono::microseconds nNextInvSend{0};
567567

568-
RecursiveMutex cs_feeFilter;
569-
// Minimum fee rate with which to filter inv's to this node
570-
CAmount minFeeFilter GUARDED_BY(cs_feeFilter){0};
568+
/** Minimum fee rate with which to filter inv's to this node */
569+
std::atomic<CAmount> minFeeFilter{0};
571570
CAmount lastSentFeeFilter{0};
572571
int64_t nextSendTimeFeeFilter{0};
573572
};

src/net_processing.cpp

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3712,7 +3712,6 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
37123712
vRecv >> newFeeFilter;
37133713
if (MoneyRange(newFeeFilter)) {
37143714
if (pfrom.m_tx_relay != nullptr) {
3715-
LOCK(pfrom.m_tx_relay->cs_feeFilter);
37163715
pfrom.m_tx_relay->minFeeFilter = newFeeFilter;
37173716
}
37183717
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)
43884387
if (fSendTrickle && pto->m_tx_relay->fSendMempool) {
43894388
auto vtxinfo = m_mempool.infoAll();
43904389
pto->m_tx_relay->fSendMempool = false;
4391-
CFeeRate filterrate;
4392-
{
4393-
LOCK(pto->m_tx_relay->cs_feeFilter);
4394-
filterrate = CFeeRate(pto->m_tx_relay->minFeeFilter);
4395-
}
4390+
const CFeeRate filterrate{pto->m_tx_relay->minFeeFilter.load()};
43964391

43974392
LOCK(pto->m_tx_relay->cs_filter);
43984393

@@ -4426,11 +4421,7 @@ bool PeerManager::SendMessages(CNode* pto)
44264421
for (std::set<uint256>::iterator it = pto->m_tx_relay->setInventoryTxToSend.begin(); it != pto->m_tx_relay->setInventoryTxToSend.end(); it++) {
44274422
vInvTx.push_back(it);
44284423
}
4429-
CFeeRate filterrate;
4430-
{
4431-
LOCK(pto->m_tx_relay->cs_feeFilter);
4432-
filterrate = CFeeRate(pto->m_tx_relay->minFeeFilter);
4433-
}
4424+
const CFeeRate filterrate{pto->m_tx_relay->minFeeFilter.load()};
44344425
// Topologically and fee-rate sort the inventory we send for privacy and priority reasons.
44354426
// A heap is used so that not all items need sorting if only a few are being sent.
44364427
CompareInvMempoolOrder compareInvMempoolOrder(&m_mempool, state.m_wtxid_relay);

0 commit comments

Comments
 (0)