mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-12 04:42:36 -03:00
Merge bitcoin/bitcoin#22485: doc: BaseIndex sync behavior with empty datadir
11780f29e7
doc: BaseIndex sync behavior with empty datadir (James O'Beirne) Pull request description: Make a note about a potentially confusing behavior with `BaseIndex::m_synced`; if the user starts bitcoind with an empty datadir and an index enabled, BaseIndex will consider itself synced (as a degenerate case). This affects how indices are built during IBD (relying solely on BlockConnected signals vs. using ThreadSync()). ACKs for top commit: mzumsande: ACK11780f29e7
Tree-SHA512: 0b530379e57c62e05d2ddca7bb8e2c936786fa00678f9eaa1bb3742d957c48f141d46f936734b03f6673d964abc7eb72c1769f1784b9d3563d218e96296b7afd
This commit is contained in:
commit
b8067cd435
2 changed files with 8 additions and 0 deletions
|
@ -85,6 +85,10 @@ bool BaseIndex::Init()
|
||||||
} else {
|
} else {
|
||||||
SetBestBlockIndex(m_chainstate->FindForkInGlobalIndex(locator));
|
SetBestBlockIndex(m_chainstate->FindForkInGlobalIndex(locator));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Note: this will latch to true immediately if the user starts up with an empty
|
||||||
|
// datadir and an index enabled. If this is the case, indexation will happen solely
|
||||||
|
// via `BlockConnected` signals until, possibly, the next restart.
|
||||||
m_synced = m_best_block_index.load() == active_chain.Tip();
|
m_synced = m_best_block_index.load() == active_chain.Tip();
|
||||||
if (!m_synced) {
|
if (!m_synced) {
|
||||||
bool prune_violation = false;
|
bool prune_violation = false;
|
||||||
|
|
|
@ -55,6 +55,10 @@ private:
|
||||||
/// Whether the index is in sync with the main chain. The flag is flipped
|
/// Whether the index is in sync with the main chain. The flag is flipped
|
||||||
/// from false to true once, after which point this starts processing
|
/// from false to true once, after which point this starts processing
|
||||||
/// ValidationInterface notifications to stay in sync.
|
/// ValidationInterface notifications to stay in sync.
|
||||||
|
///
|
||||||
|
/// Note that this will latch to true *immediately* upon startup if
|
||||||
|
/// `m_chainstate->m_chain` is empty, which will be the case upon startup
|
||||||
|
/// with an empty datadir if, e.g., `-txindex=1` is specified.
|
||||||
std::atomic<bool> m_synced{false};
|
std::atomic<bool> m_synced{false};
|
||||||
|
|
||||||
/// The last block in the chain that the index is in sync with.
|
/// The last block in the chain that the index is in sync with.
|
||||||
|
|
Loading…
Reference in a new issue