mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-20 07:09:15 +01:00
refactor: Let CCoinsViewCache::BatchWrite return void
CCoinsViewCache::BatchWrite always returns true if called from a backed cache, so just return void instead. Also return void from ::Sync and ::Flush. This allows for dropping a FatalError condition and simplifying some dead error handling code a bit. Since we now no longer exercise the "error path" when returning from `CCoinsView::BatchWrite`, make the method clear the cache instead. This should only be exercised by tests and not change production behaviour. This might slightly improve the coins_view fuzz test's ability to generate better coverage. Co-authored-by: l0rinc <pap.lorinc@gmail.com>
This commit is contained in:
@@ -2827,9 +2827,7 @@ bool Chainstate::FlushStateToDisk(
|
||||
}
|
||||
// Flush the chainstate (which may refer to block index entries).
|
||||
const auto empty_cache{(mode == FlushStateMode::ALWAYS) || fCacheLarge || fCacheCritical};
|
||||
if (empty_cache ? !CoinsTip().Flush() : !CoinsTip().Sync()) {
|
||||
return FatalError(m_chainman.GetNotifications(), state, _("Failed to write to coin database."));
|
||||
}
|
||||
empty_cache ? CoinsTip().Flush() : CoinsTip().Sync();
|
||||
full_flush_completed = true;
|
||||
TRACEPOINT(utxocache, flush,
|
||||
int64_t{Ticks<std::chrono::microseconds>(NodeClock::now() - nNow)},
|
||||
@@ -2966,8 +2964,7 @@ bool Chainstate::DisconnectTip(BlockValidationState& state, DisconnectedBlockTra
|
||||
LogError("DisconnectTip(): DisconnectBlock %s failed\n", pindexDelete->GetBlockHash().ToString());
|
||||
return false;
|
||||
}
|
||||
bool flushed = view.Flush(/*will_reuse_cache=*/false); // local CCoinsViewCache goes out of scope
|
||||
assert(flushed);
|
||||
view.Flush(/*will_reuse_cache=*/false); // local CCoinsViewCache goes out of scope
|
||||
}
|
||||
LogDebug(BCLog::BENCH, "- Disconnect block: %.2fms\n",
|
||||
Ticks<MillisecondsDouble>(SteadyClock::now() - time_start));
|
||||
@@ -3101,8 +3098,7 @@ bool Chainstate::ConnectTip(
|
||||
Ticks<MillisecondsDouble>(time_3 - time_2),
|
||||
Ticks<SecondsDouble>(m_chainman.time_connect_total),
|
||||
Ticks<MillisecondsDouble>(m_chainman.time_connect_total) / m_chainman.num_blocks_total);
|
||||
bool flushed = view.Flush(/*will_reuse_cache=*/false); // local CCoinsViewCache goes out of scope
|
||||
assert(flushed);
|
||||
view.Flush(/*will_reuse_cache=*/false); // local CCoinsViewCache goes out of scope
|
||||
}
|
||||
const auto time_4{SteadyClock::now()};
|
||||
m_chainman.time_flush += time_4 - time_3;
|
||||
|
||||
Reference in New Issue
Block a user