mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-09-11 21:20:39 +02:00
Merge bitcoin/bitcoin#36059: test: make index crash test check saved state
7ea36e985atest: preserve index crash test state (Lőrinc)5aa15df60ctest: expose missing index crash checkpoint (Lőrinc) Pull request description: **Problem:** #35847 moved the unclean-shutdown test into the shared base index tests, but it checked only that each index could reopen and start background sync. Both checks also pass when the index reopens at height 0, so they do not verify that a height-100 checkpoint was saved before the simulated crash and reloaded afterward. **Fix:** The first commit records the existing false positive by asserting that each index reopens at height 0 before background sync. The second commit establishes a durable checkpoint at height 100, drains its setup notification, and changes the same assertion to the pre-crash height. ACKs for top commit: jeanpablojp: tACK7ea36e985amzumsande: ACK7ea36e985aTree-SHA512: 0dca2bdd978c5df4acbb01692bb2058e74efa70da3d7191687628075a680a57848ddda8087629b5d743d9a1648d7dc849fda9ff487252136a0c91cdfda33ba32
This commit is contained in:
@@ -108,11 +108,15 @@ BOOST_FIXTURE_TEST_CASE(baseindex_no_commit_ahead_of_flush, TestChain100Setup)
|
||||
}
|
||||
|
||||
// Test shutdown between BlockConnected and ChainStateFlushed notifications,
|
||||
// make sure index is not corrupted and is able to reload.
|
||||
// make sure index is not corrupted and reloads at the last committed height.
|
||||
BOOST_FIXTURE_TEST_CASE(index_unclean_shutdown, TestChain100Setup)
|
||||
{
|
||||
Chainstate& chainstate = Assert(m_node.chainman)->ActiveChainstate();
|
||||
const CChainParams& params = Params();
|
||||
const int tip_height{WITH_LOCK(cs_main, return chainstate.m_chain.Height())};
|
||||
chainstate.ForceFlushStateToDisk();
|
||||
// Drain the notification before registering any index.
|
||||
m_node.chain->context()->validation_signals->SyncWithValidationInterfaceQueue();
|
||||
for (const auto& [index_name, make_index] : INDEX_FACTORIES) {
|
||||
BOOST_TEST_INFO_SCOPE(index_name);
|
||||
{
|
||||
@@ -144,7 +148,8 @@ BOOST_FIXTURE_TEST_CASE(index_unclean_shutdown, TestChain100Setup)
|
||||
{
|
||||
auto index{make_index(m_node)};
|
||||
BOOST_REQUIRE(index->Init());
|
||||
// Make sure the index can be loaded.
|
||||
// Make sure the index reloads from the pre-crash commit.
|
||||
BOOST_CHECK_EQUAL(index->GetSummary().best_block_height, tip_height);
|
||||
BOOST_REQUIRE(index->StartBackgroundSync());
|
||||
index->Stop();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user