diff --git a/src/init.cpp b/src/init.cpp index 9b139e4b5ade1..e59bab8d3074a 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1934,8 +1934,15 @@ bool AppInitMain(const CoreContext& context, NodeContext& node, interfaces::Bloc creditPoolManager.reset(new CCreditPoolManager(*node.evodb)); llmq::quorumSnapshotManager.reset(); llmq::quorumSnapshotManager.reset(new llmq::CQuorumSnapshotManager(*node.evodb)); + + if (node.llmq_ctx) { + node.llmq_ctx->Interrupt(); + node.llmq_ctx->Stop(); + } node.llmq_ctx.reset(); node.llmq_ctx.reset(new LLMQContext(chainman.ActiveChainstate(), *node.connman, *node.evodb, *::sporkManager, *node.mempool, node.peerman, false, fReset || fReindexChainState)); + // Have to start it early to let VerifyDB check ChainLock signatures in coinbase + node.llmq_ctx->Start(); if (fReset) { pblocktree->WriteReindexing(true); @@ -2307,8 +2314,6 @@ bool AppInitMain(const CoreContext& context, NodeContext& node, interfaces::Bloc node.scheduler->scheduleEvery(std::bind(&PeriodicStats, std::ref(*node.args), std::cref(*node.mempool)), std::chrono::seconds{nStatsPeriod}); } - node.llmq_ctx->Start(); - // ********************************************************* Step 11: import blocks if (!CheckDiskSpace(GetDataDir())) {