validation: only call UpdatedBlockTip for active chainstate

This notification isn't needed for background chainstates.

`kernel::Notifications::blockTip` are also skipped.
This commit is contained in:
James O'Beirne committed 2023-09-30 06:38:47 -04:00
1 parent c6af23c517
commit 1e59acdf17
2 files changed
+2 -2

No files matched your search

+1 -1
View File
@@ -3263,7 +3263,7 @@ bool Chainstate::ActivateBestChain(BlockValidationState& state, std::shared_ptr<
// Notify external listeners about the new tip. // Notify external listeners about the new tip.
// Enqueue while holding cs_main to ensure that UpdatedBlockTip is called in the order in which blocks are connected // Enqueue while holding cs_main to ensure that UpdatedBlockTip is called in the order in which blocks are connected
if (pindexFork != pindexNewTip) { if (this == &m_chainman.ActiveChainstate() && pindexFork != pindexNewTip) {
// Notify ValidationInterface subscribers // Notify ValidationInterface subscribers
GetMainSignals().UpdatedBlockTip(pindexNewTip, pindexFork, still_in_ibd); GetMainSignals().UpdatedBlockTip(pindexNewTip, pindexFork, still_in_ibd);
+1 -1
View File
@@ -87,7 +87,7 @@ protected:
* but may not be called on every intermediate tip. If the latter behavior is desired, * but may not be called on every intermediate tip. If the latter behavior is desired,
* subscribe to BlockConnected() instead. * subscribe to BlockConnected() instead.
* *
* Called on a background thread. * Called on a background thread. Only called for the active chainstate.
*/ */
virtual void UpdatedBlockTip(const CBlockIndex *pindexNew, const CBlockIndex *pindexFork, bool fInitialDownload) {} virtual void UpdatedBlockTip(const CBlockIndex *pindexNew, const CBlockIndex *pindexFork, bool fInitialDownload) {}
/** /**