init: change shutdown order of load block thread and scheduler
This avoids situations during a reindex in which shutdown doesn't finish since SyncWithValidationInterfaceQueue is called by the load block thread when the scheduler is already stopped.
This commit is contained in:
1 parent
33af14e31b
commit
5fd4836019
1 file changed
+4
-3
+4
-3
@@ -296,10 +296,11 @@ void Shutdown(NodeContext& node)
|
|||||||
|
|
||||||
StopTorControl();
|
StopTorControl();
|
||||||
|
|
||||||
// After everything has been shut down, but before things get flushed, stop the
|
|
||||||
// scheduler and load block thread.
|
|
||||||
if (node.scheduler) node.scheduler->stop();
|
|
||||||
if (node.chainman && node.chainman->m_thread_load.joinable()) node.chainman->m_thread_load.join();
|
if (node.chainman && node.chainman->m_thread_load.joinable()) node.chainman->m_thread_load.join();
|
||||||
|
// After everything has been shut down, but before things get flushed, stop the
|
||||||
|
// the scheduler. After this point, SyncWithValidationInterfaceQueue() should not be called anymore
|
||||||
|
// as this would prevent the shutdown from completing.
|
||||||
|
if (node.scheduler) node.scheduler->stop();
|
||||||
|
|
||||||
// After the threads that potentially access these pointers have been stopped,
|
// After the threads that potentially access these pointers have been stopped,
|
||||||
// destruct and reset all to nullptr.
|
// destruct and reset all to nullptr.
|
||||||
|
|||||||
Reference in new issue
Block a user