Skip to content

Commit 263dd67

Browse files
committed
refactor: drop remaining gArgs usage in LLMQ code
Same rationale as previous commit.
1 parent 3f41401 commit 263dd67

File tree

12 files changed

+53
-39
lines changed

12 files changed

+53
-39
lines changed

src/init.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2035,6 +2035,17 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
20352035
/*dash_dbs_in_memory=*/false,
20362036
quorums_recovery,
20372037
quorums_watch,
2038+
/*bls_threads=*/[&args]() -> int8_t {
2039+
int8_t threads = args.GetIntArg("-parbls", llmq::DEFAULT_BLSCHECK_THREADS);
2040+
if (threads <= 0) {
2041+
// -parbls=0 means autodetect (number of cores - 1 validator threads)
2042+
// -parbls=-n means "leave n cores free" (number of cores - n - 1 validator threads)
2043+
threads += GetNumCores();
2044+
}
2045+
// Subtract 1 because the main thread counts towards the par threads
2046+
return std::clamp<int8_t>(threads - 1, 0, llmq::MAX_BLSCHECK_THREADS);
2047+
}(),
2048+
args.GetIntArg("-maxrecsigsage", llmq::DEFAULT_MAX_RECOVERED_SIGS_AGE),
20382049
/*shutdown_requested=*/ShutdownRequested,
20392050
/*coins_error_cb=*/[]() {
20402051
uiInterface.ThreadSafeMessageBox(

src/llmq/blockprocessor.cpp

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -46,26 +46,13 @@ static const std::string DB_MINED_COMMITMENT_BY_INVERSED_HEIGHT_Q_INDEXED = "q_m
4646
static const std::string DB_BEST_BLOCK_UPGRADE = "q_bbu2";
4747

4848
CQuorumBlockProcessor::CQuorumBlockProcessor(CChainState& chainstate, CDeterministicMNManager& dmnman, CEvoDB& evoDb,
49-
CQuorumSnapshotManager& qsnapman) :
49+
CQuorumSnapshotManager& qsnapman, int8_t bls_threads) :
5050
m_chainstate{chainstate},
5151
m_dmnman{dmnman},
5252
m_evoDb{evoDb},
5353
m_qsnapman{qsnapman}
5454
{
5555
utils::InitQuorumsCache(mapHasMinedCommitmentCache);
56-
57-
int bls_threads = gArgs.GetIntArg("-parbls", DEFAULT_BLSCHECK_THREADS);
58-
if (bls_threads <= 0) {
59-
// -parbls=0 means autodetect (number of cores - 1 validator threads)
60-
// -parbls=-n means "leave n cores free" (number of cores - n - 1 validator threads)
61-
bls_threads += GetNumCores();
62-
}
63-
// Subtract 1 because the main thread counts towards the par threads
64-
bls_threads = std::max(bls_threads - 1, 0);
65-
66-
// Number of script-checking threads <= MAX_BLSCHECK_THREADS
67-
bls_threads = std::min(bls_threads, MAX_BLSCHECK_THREADS);
68-
6956
LogPrintf("BLS verification uses %d additional threads\n", bls_threads);
7057
m_bls_queue.StartWorkerThreads(bls_threads);
7158
}

src/llmq/blockprocessor.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class CQuorumBlockProcessor
5959
CQuorumBlockProcessor(const CQuorumBlockProcessor&) = delete;
6060
CQuorumBlockProcessor& operator=(const CQuorumBlockProcessor&) = delete;
6161
explicit CQuorumBlockProcessor(CChainState& chainstate, CDeterministicMNManager& dmnman, CEvoDB& evoDb,
62-
CQuorumSnapshotManager& qsnapman);
62+
CQuorumSnapshotManager& qsnapman, int8_t bls_threads);
6363
~CQuorumBlockProcessor();
6464

6565
[[nodiscard]] MessageProcessingResult ProcessMessage(const CNode& peer, std::string_view msg_type, CDataStream& vRecv)

src/llmq/context.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,20 @@ LLMQContext::LLMQContext(ChainstateManager& chainman, CDeterministicMNManager& d
1919
CMasternodeMetaMan& mn_metaman, CMNHFManager& mnhfman, CSporkManager& sporkman,
2020
CTxMemPool& mempool, const CActiveMasternodeManager* const mn_activeman,
2121
const CMasternodeSync& mn_sync, const llmq::QvvecSyncModeMap& sync_map,
22-
const util::DbWrapperParams& db_params, bool quorums_recovery, bool quorums_watch) :
22+
const util::DbWrapperParams& db_params, bool quorums_recovery, bool quorums_watch,
23+
int8_t bls_threads, int64_t max_recsigs_age) :
2324
bls_worker{std::make_shared<CBLSWorker>()},
2425
dkg_debugman{std::make_unique<llmq::CDKGDebugManager>()},
2526
qsnapman{std::make_unique<llmq::CQuorumSnapshotManager>(evo_db)},
26-
quorum_block_processor{
27-
std::make_unique<llmq::CQuorumBlockProcessor>(chainman.ActiveChainstate(), dmnman, evo_db, *qsnapman)},
27+
quorum_block_processor{std::make_unique<llmq::CQuorumBlockProcessor>(chainman.ActiveChainstate(), dmnman, evo_db,
28+
*qsnapman, bls_threads)},
2829
qdkgsman{std::make_unique<llmq::CDKGSessionManager>(*bls_worker, dmnman, *dkg_debugman, mn_metaman,
2930
*quorum_block_processor, *qsnapman, mn_activeman, chainman,
3031
sporkman, db_params, quorums_watch)},
3132
qman{std::make_unique<llmq::CQuorumManager>(*bls_worker, dmnman, *qdkgsman, evo_db, *quorum_block_processor,
3233
*qsnapman, mn_activeman, chainman, mn_sync, sporkman, sync_map,
3334
db_params, quorums_recovery, quorums_watch)},
34-
sigman{std::make_unique<llmq::CSigningManager>(*qman, db_params)},
35+
sigman{std::make_unique<llmq::CSigningManager>(*qman, db_params, max_recsigs_age)},
3536
clhandler{std::make_unique<llmq::CChainLocksHandler>(chainman.ActiveChainstate(), *qman, sporkman, mempool, mn_sync)},
3637
isman{std::make_unique<llmq::CInstantSendManager>(*clhandler, chainman.ActiveChainstate(), *sigman, sporkman,
3738
mempool, mn_sync, db_params)}

src/llmq/context.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ struct LLMQContext {
4444
CMasternodeMetaMan& mn_metaman, CMNHFManager& mnhfman, CSporkManager& sporkman,
4545
CTxMemPool& mempool, const CActiveMasternodeManager* const mn_activeman,
4646
const CMasternodeSync& mn_sync, const llmq::QvvecSyncModeMap& sync_map,
47-
const util::DbWrapperParams& db_params, bool quorums_recovery, bool quorums_watch);
47+
const util::DbWrapperParams& db_params, bool quorums_recovery, bool quorums_watch,
48+
int8_t bls_threads, int64_t max_recsigs_age);
4849
~LLMQContext();
4950

5051
void Interrupt();

src/llmq/options.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ enum class QvvecSyncMode {
2828
};
2929

3030
/** Maximum number of dedicated script-checking threads allowed */
31-
static const int MAX_BLSCHECK_THREADS{33};
31+
static const int8_t MAX_BLSCHECK_THREADS{33};
3232
/** -parbls default (number of bls-checking threads, 0 = auto) */
33-
static const int DEFAULT_BLSCHECK_THREADS{0};
33+
static const int8_t DEFAULT_BLSCHECK_THREADS{0};
3434
/** -llmq-data-recovery default */
3535
static constexpr bool DEFAULT_ENABLE_QUORUM_DATA_RECOVERY{true};
3636
/** -watchquorums default, if true, we will connect to all new quorums and watch their communication */

src/llmq/signing.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -326,9 +326,11 @@ void CRecoveredSigsDb::CleanupOldVotes(int64_t maxAge)
326326

327327
//////////////////
328328

329-
CSigningManager::CSigningManager(const CQuorumManager& _qman, const util::DbWrapperParams& db_params) :
329+
CSigningManager::CSigningManager(const CQuorumManager& _qman, const util::DbWrapperParams& db_params,
330+
int64_t max_recsigs_age) :
330331
db{db_params},
331-
qman{_qman}
332+
qman{_qman},
333+
m_max_recsigs_age{max_recsigs_age}
332334
{
333335
}
334336

@@ -534,10 +536,8 @@ void CSigningManager::TruncateRecoveredSig(Consensus::LLMQType llmqType, const u
534536

535537
void CSigningManager::Cleanup()
536538
{
537-
int64_t maxAge = gArgs.GetIntArg("-maxrecsigsage", DEFAULT_MAX_RECOVERED_SIGS_AGE);
538-
539-
db.CleanupOldRecoveredSigs(maxAge);
540-
db.CleanupOldVotes(maxAge);
539+
db.CleanupOldRecoveredSigs(m_max_recsigs_age);
540+
db.CleanupOldVotes(m_max_recsigs_age);
541541
}
542542

543543
void CSigningManager::RegisterRecoveredSigsListener(CRecoveredSigsListener* l)

src/llmq/signing.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,9 +158,9 @@ class CRecoveredSigsListener
158158
class CSigningManager
159159
{
160160
private:
161-
162161
CRecoveredSigsDb db;
163162
const CQuorumManager& qman;
163+
const int64_t m_max_recsigs_age;
164164

165165
mutable Mutex cs_pending;
166166
// Incoming and not verified yet
@@ -176,7 +176,7 @@ class CSigningManager
176176
CSigningManager() = delete;
177177
CSigningManager(const CSigningManager&) = delete;
178178
CSigningManager& operator=(const CSigningManager&) = delete;
179-
explicit CSigningManager(const CQuorumManager& _qman, const util::DbWrapperParams& db_params);
179+
explicit CSigningManager(const CQuorumManager& _qman, const util::DbWrapperParams& db_params, int64_t max_recsigs_age);
180180
~CSigningManager();
181181

182182
bool AlreadyHave(const CInv& inv) const EXCLUSIVE_LOCKS_REQUIRED(!cs_pending);

src/node/chainstate.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ std::optional<ChainstateLoadingError> LoadChainstate(bool fReset,
6464
bool dash_dbs_in_memory,
6565
bool quorums_recovery,
6666
bool quorums_watch,
67+
int8_t bls_threads,
68+
int64_t max_recsigs_age,
6769
std::function<bool()> shutdown_requested,
6870
std::function<void()> coins_error_cb)
6971
{
@@ -91,7 +93,8 @@ std::optional<ChainstateLoadingError> LoadChainstate(bool fReset,
9193

9294
DashChainstateSetup(chainman, govman, mn_metaman, mn_sync, sporkman, mn_activeman, chain_helper, cpoolman,
9395
dmnman, evodb, mnhf_manager, llmq_ctx, mempool, data_dir, sync_map, dash_dbs_in_memory,
94-
/*llmq_dbs_wipe=*/fReset || fReindexChainState, quorums_recovery, quorums_watch, consensus_params);
96+
/*llmq_dbs_wipe=*/fReset || fReindexChainState, quorums_recovery, quorums_watch,
97+
bls_threads, max_recsigs_age, consensus_params);
9598

9699
if (fReset) {
97100
pblocktree->WriteReindexing(true);
@@ -230,6 +233,8 @@ void DashChainstateSetup(ChainstateManager& chainman,
230233
bool llmq_dbs_wipe,
231234
bool quorums_recovery,
232235
bool quorums_watch,
236+
int8_t bls_threads,
237+
int64_t max_recsigs_age,
233238
const Consensus::Params& consensus_params)
234239
{
235240
// Same logic as pblocktree
@@ -247,7 +252,7 @@ void DashChainstateSetup(ChainstateManager& chainman,
247252
llmq_ctx = std::make_unique<LLMQContext>(chainman, *dmnman, *evodb, mn_metaman, *mnhf_manager, sporkman,
248253
*mempool, mn_activeman.get(), mn_sync, sync_map,
249254
util::DbWrapperParams{.path = data_dir, .memory = llmq_dbs_in_memory, .wipe = llmq_dbs_wipe},
250-
quorums_recovery, quorums_watch);
255+
quorums_recovery, quorums_watch, bls_threads, max_recsigs_age);
251256
mempool->ConnectManagers(dmnman.get(), llmq_ctx->isman.get());
252257
// Enable CMNHFManager::{Process, Undo}Block
253258
mnhf_manager->ConnectManagers(llmq_ctx->qman.get());

src/node/chainstate.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,8 @@ std::optional<ChainstateLoadingError> LoadChainstate(bool fReset,
110110
bool dash_dbs_in_memory,
111111
bool quorums_recovery,
112112
bool quorums_watch,
113+
int8_t bls_threads,
114+
int64_t max_recsigs_age,
113115
std::function<bool()> shutdown_requested = nullptr,
114116
std::function<void()> coins_error_cb = nullptr);
115117

@@ -133,6 +135,8 @@ void DashChainstateSetup(ChainstateManager& chainman,
133135
bool llmq_dbs_wipe,
134136
bool quorums_recovery,
135137
bool quorums_watch,
138+
int8_t bls_threads,
139+
int64_t max_recsigs_age,
136140
const Consensus::Params& consensus_params);
137141

138142
void DashChainstateSetupClose(std::unique_ptr<CChainstateHelper>& chain_helper,

0 commit comments

Comments
 (0)