mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-05-06 18:01:03 +02:00
blockstorage: Add Assume for fKnown / snapshot chainstate
fKnown is true during reindex (and only then), which deletes any existing snapshot chainstate. As a result, this function can never be called wth fKnown set and a snapshot chainstate. Add an Assume for this, and make the code initializing a blockfile cursor for the snapshot conditional on !fKnown. This is a preparation for splitting the reindex logic out of FindBlockPos in the following commits.
This commit is contained in:
parent
7973a67091
commit
0d114e3cb2
@ -853,8 +853,16 @@ bool BlockManager::FindBlockPos(FlatFilePos& pos, unsigned int nAddSize, unsigne
|
|||||||
LOCK(cs_LastBlockFile);
|
LOCK(cs_LastBlockFile);
|
||||||
|
|
||||||
const BlockfileType chain_type = BlockfileTypeForHeight(nHeight);
|
const BlockfileType chain_type = BlockfileTypeForHeight(nHeight);
|
||||||
|
// Check that chain type is NORMAL if fKnown is true, because fKnown is only
|
||||||
|
// true during reindexing, and reindexing deletes snapshot chainstates, so
|
||||||
|
// chain_type will not be SNAPSHOT. Also check that cursor exists, because
|
||||||
|
// the normal cursor should never be null.
|
||||||
|
if (fKnown) {
|
||||||
|
Assume(chain_type == BlockfileType::NORMAL);
|
||||||
|
Assume(m_blockfile_cursors[chain_type]);
|
||||||
|
}
|
||||||
|
|
||||||
if (!m_blockfile_cursors[chain_type]) {
|
if (!fKnown && !m_blockfile_cursors[chain_type]) {
|
||||||
// If a snapshot is loaded during runtime, we may not have initialized this cursor yet.
|
// If a snapshot is loaded during runtime, we may not have initialized this cursor yet.
|
||||||
assert(chain_type == BlockfileType::ASSUMED);
|
assert(chain_type == BlockfileType::ASSUMED);
|
||||||
const auto new_cursor = BlockfileCursor{this->MaxBlockfileNum() + 1};
|
const auto new_cursor = BlockfileCursor{this->MaxBlockfileNum() + 1};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user