mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-16 13:01:19 +02:00
Merge ef29d5d7e2 into merged_master (Bitcoin PR bitcoin/bitcoin#27607)
This commit is contained in:
commit
f61ec91393
20 changed files with 189 additions and 110 deletions
|
|
@ -27,7 +27,6 @@
|
|||
|
||||
namespace node {
|
||||
std::atomic_bool fReindex(false);
|
||||
std::atomic_bool g_indexes_ready_to_sync{false};
|
||||
|
||||
// ELEMENTS
|
||||
bool fTrimHeaders = false;
|
||||
|
|
@ -415,16 +414,31 @@ bool BlockManager::IsBlockPruned(const CBlockIndex* pblockindex)
|
|||
return (m_have_pruned && !(pblockindex->nStatus & BLOCK_HAVE_DATA) && pblockindex->nTx > 0);
|
||||
}
|
||||
|
||||
const CBlockIndex* BlockManager::GetFirstStoredBlock(const CBlockIndex& start_block)
|
||||
const CBlockIndex* BlockManager::GetFirstStoredBlock(const CBlockIndex& upper_block, const CBlockIndex* lower_block)
|
||||
{
|
||||
AssertLockHeld(::cs_main);
|
||||
const CBlockIndex* last_block = &start_block;
|
||||
const CBlockIndex* last_block = &upper_block;
|
||||
assert(last_block->nStatus & BLOCK_HAVE_DATA); // 'upper_block' must have data
|
||||
while (last_block->pprev && (last_block->pprev->nStatus & BLOCK_HAVE_DATA)) {
|
||||
if (lower_block) {
|
||||
// Return if we reached the lower_block
|
||||
if (last_block == lower_block) return lower_block;
|
||||
// if range was surpassed, means that 'lower_block' is not part of the 'upper_block' chain
|
||||
// and so far this is not allowed.
|
||||
assert(last_block->nHeight >= lower_block->nHeight);
|
||||
}
|
||||
last_block = last_block->pprev;
|
||||
}
|
||||
assert(last_block != nullptr);
|
||||
return last_block;
|
||||
}
|
||||
|
||||
bool BlockManager::CheckBlockDataAvailability(const CBlockIndex& upper_block, const CBlockIndex& lower_block)
|
||||
{
|
||||
if (!(upper_block.nStatus & BLOCK_HAVE_DATA)) return false;
|
||||
return GetFirstStoredBlock(upper_block, &lower_block) == &lower_block;
|
||||
}
|
||||
|
||||
// If we're using -prune with -reindex, then delete block files that will be ignored by the
|
||||
// reindex. Since reindexing works by starting at block file 0 and looping until a blockfile
|
||||
// is missing, do the same here to delete any later block files after a gap. Also delete all
|
||||
|
|
@ -880,7 +894,7 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
void ThreadImport(ChainstateManager& chainman, std::vector<fs::path> vImportFiles, const fs::path& mempool_path)
|
||||
void ImportBlocks(ChainstateManager& chainman, std::vector<fs::path> vImportFiles)
|
||||
{
|
||||
ScheduleBatchPriority();
|
||||
|
||||
|
|
@ -951,7 +965,5 @@ void ThreadImport(ChainstateManager& chainman, std::vector<fs::path> vImportFile
|
|||
return;
|
||||
}
|
||||
} // End scope of ImportingNow
|
||||
chainman.ActiveChainstate().LoadMempool(mempool_path);
|
||||
g_indexes_ready_to_sync = true;
|
||||
}
|
||||
} // namespace node
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue