Skip to content

Commit d21612f

Browse files
committed
Merge bitcoin/bitcoin#32404: log: print reason when writing chainstate
53e9b71 log: print reason for why should_write was triggered in `FlushStateToDisk` (Lőrinc) Pull request description: This PR addresses a leftover logging nit found while reviewing bitcoin/bitcoin#30611 (review). This was also needed to validate its behavior properly, because currently there's no way to visualize how often (and why) we're flushing/syncing. Starting with `-debug=coindb` will now add log lines such as ``` 2025-05-03T08:34:57Z [coindb] Writing chainstate to disk: flush mode=PERIODIC, prune=0, large=0, critical=0, periodic=1 2025-05-03T09:26:52Z [coindb] Writing chainstate to disk: flush mode=PERIODIC, prune=0, large=0, critical=0, periodic=1 2025-05-03T10:27:58Z [coindb] Writing chainstate to disk: flush mode=PERIODIC, prune=0, large=0, critical=0, periodic=1 2025-05-03T11:39:20Z [coindb] Writing chainstate to disk: flush mode=PERIODIC, prune=0, large=0, critical=0, periodic=1 2025-05-03T12:41:48Z [coindb] Writing chainstate to disk: flush mode=PERIODIC, prune=0, large=0, critical=0, periodic=1 2025-05-03T13:40:08Z [coindb] Writing chainstate to disk: flush mode=PERIODIC, prune=0, large=0, critical=0, periodic=1 2025-05-03T14:49:16Z [coindb] Writing chainstate to disk: flush mode=PERIODIC, prune=0, large=0, critical=0, periodic=1 2025-05-03T15:14:37Z [coindb] Writing chainstate to disk: flush mode=ALWAYS, prune=0, large=0, critical=0, periodic=0 2025-05-03T15:17:28Z [coindb] Writing chainstate to disk: flush mode=ALWAYS, prune=0, large=0, critical=0, periodic=0 ``` ACKs for top commit: davidgumberg: ACK bitcoin/bitcoin@53e9b71 jonatack: diff-only review ACK 53e9b71 per `git range-diff 2df824 cfc8056 53e9b71` achow101: ACK 53e9b71 andrewtoth: utACK 53e9b71 Tree-SHA512: 09f3a38cf3ecaa32cf3aba350a9e9dff9345c5468a05070c8b20987f0fdb23a8b1dc59370829c64ea356d2fc0ce99a66cc7240de7fa8c19ef3133da06db6bf3d
2 parents 9bd9aee + 53e9b71 commit d21612f

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

src/validation.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2874,6 +2874,9 @@ bool Chainstate::FlushStateToDisk(
28742874
bool should_write = (mode == FlushStateMode::ALWAYS) || fCacheLarge || fCacheCritical || fPeriodicWrite || fFlushForPrune;
28752875
// Write blocks, block index and best chain related state to disk.
28762876
if (should_write) {
2877+
LogDebug(BCLog::COINDB, "Writing chainstate to disk: flush mode=%s, prune=%d, large=%d, critical=%d, periodic=%d",
2878+
FlushStateModeNames[size_t(mode)], fFlushForPrune, fCacheLarge, fCacheCritical, fPeriodicWrite);
2879+
28772880
// Ensure we can write block index
28782881
if (!CheckDiskSpace(m_blockman.m_opts.blocks_dir)) {
28792882
return FatalError(m_chainman.GetNotifications(), state, _("Disk space is too low!"));

src/validation.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,8 @@ enum DisconnectResult
437437
class ConnectTrace;
438438

439439
/** @see Chainstate::FlushStateToDisk */
440-
enum class FlushStateMode {
440+
inline constexpr std::array FlushStateModeNames{"NONE", "IF_NEEDED", "PERIODIC", "ALWAYS"};
441+
enum class FlushStateMode: uint8_t {
441442
NONE,
442443
IF_NEEDED,
443444
PERIODIC,

0 commit comments

Comments
 (0)