Skip to content

Commit 6b811c2

Browse files
committed
refactor: make CDKGSessionManager a plugable obj for CQuorumManager
Also: - Drop unneeded argument from LLMQContext::Start() - Drop LLMQContext::Interrupt() that does nothing
1 parent 5d54cfe commit 6b811c2

File tree

8 files changed

+37
-34
lines changed

8 files changed

+37
-34
lines changed

src/init.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -258,9 +258,6 @@ void Interrupt(NodeContext& node)
258258
if (node.peerman) {
259259
node.peerman->InterruptHandlers();
260260
}
261-
if (node.llmq_ctx) {
262-
node.llmq_ctx->Interrupt();
263-
}
264261
InterruptMapPort();
265262
if (node.connman)
266263
node.connman->Interrupt();
@@ -2323,7 +2320,7 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
23232320

23242321
// ********************************************************* Step 10a: schedule Dash-specific tasks
23252322

2326-
node.llmq_ctx->Start(*node.peerman);
2323+
node.llmq_ctx->Start();
23272324
node.peerman->StartHandlers();
23282325
if (node.active_ctx) node.active_ctx->Start(*node.connman, *node.peerman);
23292326

src/llmq/context.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,26 @@ LLMQContext::LLMQContext(ChainstateManager& chainman, CDeterministicMNManager& d
2929
qdkgsman{std::make_unique<llmq::CDKGSessionManager>(*bls_worker, dmnman, *dkg_debugman, mn_metaman,
3030
*quorum_block_processor, *qsnapman, mn_activeman, chainman,
3131
sporkman, db_params, quorums_watch)},
32-
qman{std::make_unique<llmq::CQuorumManager>(*bls_worker, dmnman, *qdkgsman, evo_db, *quorum_block_processor,
33-
*qsnapman, mn_activeman, chainman, mn_sync, sporkman, sync_map,
34-
db_params, quorums_recovery, quorums_watch)},
32+
qman{std::make_unique<llmq::CQuorumManager>(*bls_worker, dmnman, evo_db, *quorum_block_processor, *qsnapman,
33+
mn_activeman, chainman, mn_sync, sporkman, sync_map, db_params,
34+
quorums_recovery, quorums_watch)},
3535
sigman{std::make_unique<llmq::CSigningManager>(*qman, db_params, max_recsigs_age)},
3636
clhandler{std::make_unique<llmq::CChainLocksHandler>(chainman.ActiveChainstate(), *qman, sporkman, mempool, mn_sync)},
3737
isman{std::make_unique<llmq::CInstantSendManager>(*clhandler, chainman.ActiveChainstate(), *sigman, sporkman,
3838
mempool, mn_sync, db_params)}
3939
{
4040
// Have to start it early to let VerifyDB check ChainLock signatures in coinbase
4141
bls_worker->Start();
42+
qman->ConnectManager(qdkgsman.get());
4243
}
4344

44-
LLMQContext::~LLMQContext() {
45+
LLMQContext::~LLMQContext()
46+
{
47+
qman->DisconnectManager();
4548
bls_worker->Stop();
4649
}
4750

48-
void LLMQContext::Interrupt() {
49-
}
50-
51-
void LLMQContext::Start(PeerManager& peerman)
51+
void LLMQContext::Start()
5252
{
5353
qman->Start();
5454
clhandler->Start(*isman);

src/llmq/context.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,7 @@ struct LLMQContext {
4848
int8_t bls_threads, int64_t max_recsigs_age);
4949
~LLMQContext();
5050

51-
void Interrupt();
52-
void Start(PeerManager& peerman);
51+
void Start();
5352
void Stop();
5453

5554
/** Guaranteed if LLMQContext is initialized then all members are valid too

src/llmq/quorums.cpp

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -207,15 +207,14 @@ bool CQuorum::ReadContributions(const CDBWrapper& db)
207207
return true;
208208
}
209209

210-
CQuorumManager::CQuorumManager(CBLSWorker& _blsWorker, CDeterministicMNManager& dmnman, CDKGSessionManager& _dkgManager,
211-
CEvoDB& _evoDb, CQuorumBlockProcessor& _quorumBlockProcessor,
212-
CQuorumSnapshotManager& qsnapman, const CActiveMasternodeManager* const mn_activeman,
213-
const ChainstateManager& chainman, const CMasternodeSync& mn_sync,
214-
const CSporkManager& sporkman, const llmq::QvvecSyncModeMap& sync_map,
215-
const util::DbWrapperParams& db_params, bool quorums_recovery, bool quorums_watch) :
210+
CQuorumManager::CQuorumManager(CBLSWorker& _blsWorker, CDeterministicMNManager& dmnman, CEvoDB& _evoDb,
211+
CQuorumBlockProcessor& _quorumBlockProcessor, CQuorumSnapshotManager& qsnapman,
212+
const CActiveMasternodeManager* const mn_activeman, const ChainstateManager& chainman,
213+
const CMasternodeSync& mn_sync, const CSporkManager& sporkman,
214+
const llmq::QvvecSyncModeMap& sync_map, const util::DbWrapperParams& db_params,
215+
bool quorums_recovery, bool quorums_watch) :
216216
blsWorker{_blsWorker},
217217
m_dmnman{dmnman},
218-
dkgManager{_dkgManager},
219218
quorumBlockProcessor{_quorumBlockProcessor},
220219
m_qsnapman{qsnapman},
221220
m_mn_activeman{mn_activeman},
@@ -451,7 +450,9 @@ bool CQuorumManager::BuildQuorumContributions(const CFinalCommitmentPtr& fqc, co
451450
std::vector<uint16_t> memberIndexes;
452451
std::vector<BLSVerificationVectorPtr> vvecs;
453452
std::vector<CBLSSecretKey> skContributions;
454-
if (!dkgManager.GetVerifiedContributions((Consensus::LLMQType)fqc->llmqType, quorum->m_quorum_base_block_index, fqc->validMembers, memberIndexes, vvecs, skContributions)) {
453+
if (!m_qdkgsman ||
454+
!m_qdkgsman->GetVerifiedContributions((Consensus::LLMQType)fqc->llmqType, quorum->m_quorum_base_block_index,
455+
fqc->validMembers, memberIndexes, vvecs, skContributions)) {
455456
return false;
456457
}
457458

@@ -795,7 +796,9 @@ MessageProcessingResult CQuorumManager::ProcessMessage(CNode& pfrom, CConnman& c
795796
}
796797

797798
std::vector<CBLSIESEncryptedObject<CBLSSecretKey>> vecEncrypted;
798-
if (!dkgManager.GetEncryptedContributions(request.GetLLMQType(), pQuorumBaseBlockIndex, pQuorum->qc->validMembers, request.GetProTxHash(), vecEncrypted)) {
799+
if (!m_qdkgsman ||
800+
!m_qdkgsman->GetEncryptedContributions(request.GetLLMQType(), pQuorumBaseBlockIndex,
801+
pQuorum->qc->validMembers, request.GetProTxHash(), vecEncrypted)) {
799802
return sendQDATA(CQuorumDataRequest::Errors::ENCRYPTED_CONTRIBUTIONS_MISSING, request_limit_exceeded);
800803
}
801804

src/llmq/quorums.h

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -236,13 +236,13 @@ class CQuorumManager
236236
private:
237237
CBLSWorker& blsWorker;
238238
CDeterministicMNManager& m_dmnman;
239-
CDKGSessionManager& dkgManager;
240239
CQuorumBlockProcessor& quorumBlockProcessor;
241240
CQuorumSnapshotManager& m_qsnapman;
242241
const CActiveMasternodeManager* const m_mn_activeman;
243242
const ChainstateManager& m_chainman;
244243
const CMasternodeSync& m_mn_sync;
245244
const CSporkManager& m_sporkman;
245+
llmq::CDKGSessionManager* m_qdkgsman{nullptr};
246246
const llmq::QvvecSyncModeMap m_sync_map;
247247
const bool m_quorums_recovery{false};
248248
const bool m_quorums_watch{false};
@@ -273,14 +273,22 @@ class CQuorumManager
273273
CQuorumManager() = delete;
274274
CQuorumManager(const CQuorumManager&) = delete;
275275
CQuorumManager& operator=(const CQuorumManager&) = delete;
276-
explicit CQuorumManager(CBLSWorker& _blsWorker, CDeterministicMNManager& dmnman, CDKGSessionManager& _dkgManager,
277-
CEvoDB& _evoDb, CQuorumBlockProcessor& _quorumBlockProcessor,
278-
CQuorumSnapshotManager& qsnapman, const CActiveMasternodeManager* const mn_activeman,
279-
const ChainstateManager& chainman, const CMasternodeSync& mn_sync,
280-
const CSporkManager& sporkman, const llmq::QvvecSyncModeMap& sync_map,
281-
const util::DbWrapperParams& db_params, bool quorums_recovery, bool quorums_watch);
276+
explicit CQuorumManager(CBLSWorker& _blsWorker, CDeterministicMNManager& dmnman, CEvoDB& _evoDb,
277+
CQuorumBlockProcessor& _quorumBlockProcessor, CQuorumSnapshotManager& qsnapman,
278+
const CActiveMasternodeManager* const mn_activeman, const ChainstateManager& chainman,
279+
const CMasternodeSync& mn_sync, const CSporkManager& sporkman,
280+
const llmq::QvvecSyncModeMap& sync_map, const util::DbWrapperParams& db_params,
281+
bool quorums_recovery, bool quorums_watch);
282282
~CQuorumManager();
283283

284+
void ConnectManager(gsl::not_null<llmq::CDKGSessionManager*> qdkgsman)
285+
{
286+
// Prohibit double initialization
287+
assert(m_qdkgsman == nullptr);
288+
m_qdkgsman = qdkgsman;
289+
}
290+
void DisconnectManager() { m_qdkgsman = nullptr; }
291+
284292
void Start();
285293
void Stop();
286294

src/node/chainstate.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,6 @@ void DashChainstateSetup(ChainstateManager& chainman,
245245
cpoolman = std::make_unique<CCreditPoolManager>(*evodb, chainman);
246246

247247
if (llmq_ctx) {
248-
llmq_ctx->Interrupt();
249248
llmq_ctx->Stop();
250249
}
251250
llmq_ctx.reset();

src/test/util/setup_common.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,6 @@ TestingSetup::~TestingSetup()
408408

409409
// Interrupt() and PrepareShutdown() routines
410410
if (m_node.llmq_ctx) {
411-
m_node.llmq_ctx->Interrupt();
412411
m_node.llmq_ctx->Stop();
413412
}
414413
if (m_node.connman) {

src/test/validation_chainstatemanager_tests.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ BOOST_AUTO_TEST_CASE(chainstatemanager)
7272
BOOST_CHECK(!manager.SnapshotBlockhash().has_value());
7373

7474
if (m_node.llmq_ctx) {
75-
m_node.llmq_ctx->Interrupt();
7675
m_node.llmq_ctx->Stop();
7776
}
7877
DashChainstateSetupClose(m_node);
@@ -122,7 +121,6 @@ BOOST_AUTO_TEST_CASE(chainstatemanager)
122121
SyncWithValidationInterfaceQueue();
123122

124123
if (m_node.llmq_ctx) {
125-
m_node.llmq_ctx->Interrupt();
126124
m_node.llmq_ctx->Stop();
127125
}
128126
DashChainstateSetupClose(m_node);

0 commit comments

Comments
 (0)