mirror of
https://github.com/bitcoin/bitcoin.git
synced 2024-05-17 23:56:39 +00:00
Merge #18819: net: Replace cs_feeFilter with simple std::atomic
fad1f0fd33e5e7a65b702237c7ca8e1b694852d2 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 fad1f0fd33e5e7a65b702237c7ca8e1b694852d2 practicalswift: cr ACK fad1f0fd33e5e7a65b702237c7ca8e1b694852d2: patch looks correct Tree-SHA512: 647f9b954fbf52e138d3e710937eb9131b390fef0deae03fd6a162d5a18b9f194010800bbddc8f89208d91be2802dff11c3884d04b3dd233865abd12aa3cde06
This commit is contained in:
commit
c4458cc3a1
@ -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…
x
Reference in New Issue
Block a user