Skip to content

Commit 7ebc61e

Browse files
committed
refactor: move CConnman out of CQuorumManager ctor
1 parent c07b522 commit 7ebc61e

File tree

6 files changed

+35
-30
lines changed

6 files changed

+35
-30
lines changed

src/dsnotificationinterface.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ void CDSNotificationInterface::UpdatedBlockTip(const CBlockIndex *pindexNew, con
9393
m_llmq_ctx->isman->UpdatedBlockTip(pindexNew);
9494
m_llmq_ctx->clhandler->UpdatedBlockTip();
9595

96-
m_llmq_ctx->qman->UpdatedBlockTip(pindexNew, fInitialDownload);
96+
m_llmq_ctx->qman->UpdatedBlockTip(pindexNew, m_connman, fInitialDownload);
9797
m_llmq_ctx->qdkgsman->UpdatedBlockTip(pindexNew, fInitialDownload);
9898
m_llmq_ctx->ehfSignalsHandler->UpdatedBlockTip(pindexNew, /* is_masternode = */ m_mn_activeman != nullptr);
9999

src/llmq/context.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ LLMQContext::LLMQContext(ChainstateManager& chainman, CConnman& connman, CDeterm
3030
qdkgsman{std::make_unique<llmq::CDKGSessionManager>(*bls_worker, chainman.ActiveChainstate(), dmnman, *dkg_debugman,
3131
mn_metaman, *quorum_block_processor, mn_activeman, sporkman,
3232
unit_tests, wipe)},
33-
qman{std::make_unique<llmq::CQuorumManager>(*bls_worker, chainman.ActiveChainstate(), connman, dmnman, *qdkgsman,
34-
evo_db, *quorum_block_processor, mn_activeman, mn_sync, sporkman,
35-
unit_tests, wipe)},
33+
qman{std::make_unique<llmq::CQuorumManager>(*bls_worker, chainman.ActiveChainstate(), dmnman, *qdkgsman, evo_db,
34+
*quorum_block_processor, mn_activeman, mn_sync, sporkman, unit_tests,
35+
wipe)},
3636
sigman{std::make_unique<llmq::CSigningManager>(mn_activeman, chainman.ActiveChainstate(), *qman, peerman,
3737
unit_tests, wipe)},
3838
shareman{std::make_unique<llmq::CSigSharesManager>(connman, *sigman, mn_activeman, *qman, sporkman, peerman)},

src/llmq/quorums.cpp

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -210,16 +210,15 @@ bool CQuorum::ReadContributions(const CDBWrapper& db)
210210
return true;
211211
}
212212

213-
CQuorumManager::CQuorumManager(CBLSWorker& _blsWorker, CChainState& chainstate, CConnman& _connman,
214-
CDeterministicMNManager& dmnman, CDKGSessionManager& _dkgManager, CEvoDB& _evoDb,
213+
CQuorumManager::CQuorumManager(CBLSWorker& _blsWorker, CChainState& chainstate, CDeterministicMNManager& dmnman,
214+
CDKGSessionManager& _dkgManager, CEvoDB& _evoDb,
215215
CQuorumBlockProcessor& _quorumBlockProcessor,
216216
const CActiveMasternodeManager* const mn_activeman, const CMasternodeSync& mn_sync,
217217
const CSporkManager& sporkman, bool unit_tests, bool wipe) :
218218
db(std::make_unique<CDBWrapper>(unit_tests ? "" : (gArgs.GetDataDirNet() / "llmq" / "quorumdb"), 1 << 20,
219219
unit_tests, wipe)),
220220
blsWorker(_blsWorker),
221221
m_chainstate(chainstate),
222-
connman(_connman),
223222
m_dmnman(dmnman),
224223
dkgManager(_dkgManager),
225224
quorumBlockProcessor(_quorumBlockProcessor),
@@ -249,7 +248,7 @@ void CQuorumManager::Stop()
249248
workerPool.stop(true);
250249
}
251250

252-
void CQuorumManager::TriggerQuorumDataRecoveryThreads(const CBlockIndex* pIndex) const
251+
void CQuorumManager::TriggerQuorumDataRecoveryThreads(CConnman& connman, const CBlockIndex* pIndex) const
253252
{
254253
if ((m_mn_activeman == nullptr && !IsWatchQuorumsEnabled()) || !QuorumDataRecoveryEnabled() || pIndex == nullptr) {
255254
return;
@@ -296,17 +295,17 @@ void CQuorumManager::TriggerQuorumDataRecoveryThreads(const CBlockIndex* pIndex)
296295
}
297296

298297
// Finally start the thread which triggers the requests for this quorum
299-
StartQuorumDataRecoveryThread(pQuorum, pIndex, nDataMask);
298+
StartQuorumDataRecoveryThread(connman, pQuorum, pIndex, nDataMask);
300299
}
301300
}
302301
}
303302

304-
void CQuorumManager::UpdatedBlockTip(const CBlockIndex* pindexNew, bool fInitialDownload) const
303+
void CQuorumManager::UpdatedBlockTip(const CBlockIndex* pindexNew, CConnman& connman, bool fInitialDownload) const
305304
{
306305
if (!m_mn_sync.IsBlockchainSynced()) return;
307306

308307
for (const auto& params : Params().GetConsensus().llmqs) {
309-
CheckQuorumConnections(params, pindexNew);
308+
CheckQuorumConnections(connman, params, pindexNew);
310309
}
311310

312311
if (m_mn_activeman != nullptr || IsWatchQuorumsEnabled()) {
@@ -322,11 +321,12 @@ void CQuorumManager::UpdatedBlockTip(const CBlockIndex* pindexNew, bool fInitial
322321
}
323322
}
324323

325-
TriggerQuorumDataRecoveryThreads(pindexNew);
324+
TriggerQuorumDataRecoveryThreads(connman, pindexNew);
326325
StartCleanupOldQuorumDataThread(pindexNew);
327326
}
328327

329-
void CQuorumManager::CheckQuorumConnections(const Consensus::LLMQParams& llmqParams, const CBlockIndex* pindexNew) const
328+
void CQuorumManager::CheckQuorumConnections(CConnman& connman, const Consensus::LLMQParams& llmqParams,
329+
const CBlockIndex* pindexNew) const
330330
{
331331
if (m_mn_activeman == nullptr && !IsWatchQuorumsEnabled()) return;
332332

@@ -469,7 +469,9 @@ bool CQuorumManager::HasQuorum(Consensus::LLMQType llmqType, const CQuorumBlockP
469469
return quorum_block_processor.HasMinedCommitment(llmqType, quorumHash);
470470
}
471471

472-
bool CQuorumManager::RequestQuorumData(CNode* pfrom, Consensus::LLMQType llmqType, const CBlockIndex* pQuorumBaseBlockIndex, uint16_t nDataMask, const uint256& proTxHash) const
472+
bool CQuorumManager::RequestQuorumData(CNode* pfrom, CConnman& connman, Consensus::LLMQType llmqType,
473+
const CBlockIndex* pQuorumBaseBlockIndex, uint16_t nDataMask,
474+
const uint256& proTxHash) const
473475
{
474476
if (pfrom == nullptr) {
475477
LogPrint(BCLog::LLMQ, "CQuorumManager::%s -- Invalid pfrom: nullptr\n", __func__);
@@ -697,7 +699,7 @@ size_t CQuorumManager::GetQuorumRecoveryStartOffset(const CQuorumCPtr pQuorum, c
697699
return nIndex % pQuorum->qc->validMembers.size();
698700
}
699701

700-
PeerMsgRet CQuorumManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDataStream& vRecv)
702+
PeerMsgRet CQuorumManager::ProcessMessage(CNode& pfrom, CConnman& connman, const std::string& msg_type, CDataStream& vRecv)
701703
{
702704
auto strFunc = __func__;
703705
auto errorHandler = [&](const std::string& strError, int nScore = 10) -> PeerMsgRet {
@@ -709,7 +711,6 @@ PeerMsgRet CQuorumManager::ProcessMessage(CNode& pfrom, const std::string& msg_t
709711
};
710712

711713
if (msg_type == NetMsgType::QGETDATA) {
712-
713714
if (m_mn_activeman == nullptr || (pfrom.GetVerifiedProRegTxHash().IsNull() && !pfrom.qwatch)) {
714715
return errorHandler("Not a verified masternode or a qwatch connection");
715716
}
@@ -912,7 +913,8 @@ void CQuorumManager::StartCachePopulatorThread(const CQuorumCPtr pQuorum) const
912913
});
913914
}
914915

915-
void CQuorumManager::StartQuorumDataRecoveryThread(const CQuorumCPtr pQuorum, const CBlockIndex* pIndex, uint16_t nDataMaskIn) const
916+
void CQuorumManager::StartQuorumDataRecoveryThread(CConnman& connman, const CQuorumCPtr pQuorum,
917+
const CBlockIndex* pIndex, uint16_t nDataMaskIn) const
916918
{
917919
assert(m_mn_activeman);
918920

@@ -922,7 +924,7 @@ void CQuorumManager::StartQuorumDataRecoveryThread(const CQuorumCPtr pQuorum, co
922924
}
923925
pQuorum->fQuorumDataRecoveryThreadRunning = true;
924926

925-
workerPool.push([pQuorum, pIndex, nDataMaskIn, this](int threadId) {
927+
workerPool.push([&connman, pQuorum, pIndex, nDataMaskIn, this](int threadId) {
926928
size_t nTries{0};
927929
uint16_t nDataMask{nDataMaskIn};
928930
int64_t nTimeLastSuccess{0};
@@ -958,7 +960,6 @@ void CQuorumManager::StartQuorumDataRecoveryThread(const CQuorumCPtr pQuorum, co
958960
printLog("Try to request");
959961

960962
while (nDataMask > 0 && !quorumThreadInterrupt) {
961-
962963
if (nDataMask & llmq::CQuorumDataRequest::QUORUM_VERIFICATION_VECTOR &&
963964
pQuorum->HasVerificationVector()) {
964965
nDataMask &= ~llmq::CQuorumDataRequest::QUORUM_VERIFICATION_VECTOR;
@@ -1005,7 +1006,8 @@ void CQuorumManager::StartQuorumDataRecoveryThread(const CQuorumCPtr pQuorum, co
10051006
return;
10061007
}
10071008

1008-
if (RequestQuorumData(pNode, pQuorum->qc->llmqType, pQuorum->m_quorum_base_block_index, nDataMask, proTxHash)) {
1009+
if (RequestQuorumData(pNode, connman, pQuorum->qc->llmqType, pQuorum->m_quorum_base_block_index,
1010+
nDataMask, proTxHash)) {
10091011
nTimeLastSuccess = GetTime<std::chrono::seconds>().count();
10101012
printLog("Requested");
10111013
} else {

src/llmq/quorums.h

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,6 @@ class CQuorumManager
238238

239239
CBLSWorker& blsWorker;
240240
CChainState& m_chainstate;
241-
CConnman& connman;
242241
CDeterministicMNManager& m_dmnman;
243242
CDKGSessionManager& dkgManager;
244243
CQuorumBlockProcessor& quorumBlockProcessor;
@@ -261,7 +260,7 @@ class CQuorumManager
261260
mutable CThreadInterrupt quorumThreadInterrupt;
262261

263262
public:
264-
CQuorumManager(CBLSWorker& _blsWorker, CChainState& chainstate, CConnman& _connman, CDeterministicMNManager& dmnman,
263+
CQuorumManager(CBLSWorker& _blsWorker, CChainState& chainstate, CDeterministicMNManager& dmnman,
265264
CDKGSessionManager& _dkgManager, CEvoDB& _evoDb, CQuorumBlockProcessor& _quorumBlockProcessor,
266265
const CActiveMasternodeManager* const mn_activeman, const CMasternodeSync& mn_sync,
267266
const CSporkManager& sporkman, bool unit_tests, bool wipe);
@@ -270,15 +269,17 @@ class CQuorumManager
270269
void Start();
271270
void Stop();
272271

273-
void TriggerQuorumDataRecoveryThreads(const CBlockIndex* pIndex) const;
272+
void TriggerQuorumDataRecoveryThreads(CConnman& connman, const CBlockIndex* pIndex) const;
274273

275-
void UpdatedBlockTip(const CBlockIndex *pindexNew, bool fInitialDownload) const;
274+
void UpdatedBlockTip(const CBlockIndex* pindexNew, CConnman& connman, bool fInitialDownload) const;
276275

277-
PeerMsgRet ProcessMessage(CNode& pfrom, const std::string& msg_type, CDataStream& vRecv);
276+
PeerMsgRet ProcessMessage(CNode& pfrom, CConnman& connman, const std::string& msg_type, CDataStream& vRecv);
278277

279278
static bool HasQuorum(Consensus::LLMQType llmqType, const CQuorumBlockProcessor& quorum_block_processor, const uint256& quorumHash);
280279

281-
bool RequestQuorumData(CNode* pfrom, Consensus::LLMQType llmqType, const CBlockIndex* pQuorumBaseBlockIndex, uint16_t nDataMask, const uint256& proTxHash = uint256()) const;
280+
bool RequestQuorumData(CNode* pfrom, CConnman& connman, Consensus::LLMQType llmqType,
281+
const CBlockIndex* pQuorumBaseBlockIndex, uint16_t nDataMask,
282+
const uint256& proTxHash = uint256()) const;
282283

283284
// all these methods will lock cs_main for a short period of time
284285
CQuorumCPtr GetQuorum(Consensus::LLMQType llmqType, const uint256& quorumHash) const;
@@ -289,7 +290,8 @@ class CQuorumManager
289290

290291
private:
291292
// all private methods here are cs_main-free
292-
void CheckQuorumConnections(const Consensus::LLMQParams& llmqParams, const CBlockIndex *pindexNew) const;
293+
void CheckQuorumConnections(CConnman& connman, const Consensus::LLMQParams& llmqParams,
294+
const CBlockIndex* pindexNew) const;
293295

294296
CQuorumPtr BuildQuorumFromCommitment(Consensus::LLMQType llmqType, gsl::not_null<const CBlockIndex*> pQuorumBaseBlockIndex, bool populate_cache) const;
295297
bool BuildQuorumContributions(const CFinalCommitmentPtr& fqc, const std::shared_ptr<CQuorum>& quorum) const;
@@ -301,7 +303,8 @@ class CQuorumManager
301303
size_t GetQuorumRecoveryStartOffset(const CQuorumCPtr pQuorum, const CBlockIndex* pIndex) const;
302304

303305
void StartCachePopulatorThread(const CQuorumCPtr pQuorum) const;
304-
void StartQuorumDataRecoveryThread(const CQuorumCPtr pQuorum, const CBlockIndex* pIndex, uint16_t nDataMask) const;
306+
void StartQuorumDataRecoveryThread(CConnman& connman, const CQuorumCPtr pQuorum, const CBlockIndex* pIndex,
307+
uint16_t nDataMask) const;
305308

306309
void StartCleanupOldQuorumDataThread(const CBlockIndex* pIndex) const;
307310
void MigrateOldQuorumDB(CEvoDB& evoDb) const;

src/net_processing.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5263,7 +5263,7 @@ void PeerManagerImpl::ProcessMessage(
52635263
ProcessPeerMsgRet(CMNAuth::ProcessMessage(pfrom, peer->m_their_services, m_connman, m_mn_metaman, m_mn_activeman, m_chainman.ActiveChain(), m_mn_sync, m_dmnman->GetListAtChainTip(), msg_type, vRecv), pfrom);
52645264
PostProcessMessage(m_llmq_ctx->quorum_block_processor->ProcessMessage(pfrom, msg_type, vRecv), pfrom.GetId());
52655265
ProcessPeerMsgRet(m_llmq_ctx->qdkgsman->ProcessMessage(pfrom, *this, is_masternode, msg_type, vRecv), pfrom);
5266-
ProcessPeerMsgRet(m_llmq_ctx->qman->ProcessMessage(pfrom, msg_type, vRecv), pfrom);
5266+
ProcessPeerMsgRet(m_llmq_ctx->qman->ProcessMessage(pfrom, m_connman, msg_type, vRecv), pfrom);
52675267
m_llmq_ctx->shareman->ProcessMessage(pfrom, m_sporkman, msg_type, vRecv);
52685268
ProcessPeerMsgRet(m_llmq_ctx->sigman->ProcessMessage(pfrom, msg_type, vRecv), pfrom);
52695269

src/rpc/quorums.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -818,7 +818,7 @@ static RPCHelpMan quorum_getdata()
818818
const CBlockIndex* pQuorumBaseBlockIndex = WITH_LOCK(cs_main, return chainman.m_blockman.LookupBlockIndex(quorumHash));
819819

820820
return connman.ForNode(nodeId, [&](CNode* pNode) {
821-
return llmq_ctx.qman->RequestQuorumData(pNode, llmqType, pQuorumBaseBlockIndex, nDataMask, proTxHash);
821+
return llmq_ctx.qman->RequestQuorumData(pNode, connman, llmqType, pQuorumBaseBlockIndex, nDataMask, proTxHash);
822822
});
823823
},
824824
};

0 commit comments

Comments
 (0)