Skip to content

Commit

Permalink
blockchain: increase periodic flush interval
Browse files Browse the repository at this point in the history
The periodic flush intervals were set to 5 minutes previously which on
average means that the node will flush every block when the node is
caught up to the tip.

This put an overhead on the node after the node is caught up beyond the
last checkpointed block as it'll start calling the periodic flush
function.  So while the node is still performing ibd, it'll be flushing
every 5 minutes, hurting performance.

Changing this value to 48 hours doesn't hurt the node too much as the
average worst case would be 288 blocks to reindex which is quick.
For a decent computer, 48 hours should be enough time to sync all the
blocks beyond the last checkpointed block as well.  If not, 1-2 flushes
don't hurt as much as flushing every 5 minutes.
  • Loading branch information
kcalvinalvin committed Jul 17, 2024
1 parent ff2e03e commit e130560
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 3 deletions.
6 changes: 5 additions & 1 deletion blockchain/utxocache.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,11 @@ const (
// when the flush mode FlushPeriodic is used. This is used when the initial
// block download is complete and it's useful to flush periodically in case
// of unforeseen shutdowns.
utxoFlushPeriodicInterval = time.Minute * 5
//
// We'll be flushing every 2 days. Re-indexing 288 blocks is pretty
// quick and it won't put too much overhead on the flushes while the
// node is caught up.
utxoFlushPeriodicInterval = time.Hour * 48
)

// FlushMode is used to indicate the different urgency types for a flush.
Expand Down
4 changes: 2 additions & 2 deletions blockchain/utxocache_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -586,8 +586,8 @@ func TestUtxoCacheFlush(t *testing.T) {
len(outPoints1), cache.cachedEntries.length())
}

// Arbitrarily set the last flush time to 6 minutes ago.
cache.lastFlushTime = time.Now().Add(-time.Minute * 6)
// Arbitrarily set the last flush time to 49 hours ago.
cache.lastFlushTime = time.Now().Add(-time.Hour * 49)

// Attempt to flush with flush periodic. Should flush now.
err = chain.db.Update(func(dbTx database.Tx) error {
Expand Down

0 comments on commit e130560

Please sign in to comment.