From b9138b720df4239a8acfa9119596c0876d33ea68 Mon Sep 17 00:00:00 2001 From: Ori Newman Date: Mon, 3 Feb 2020 13:39:25 +0200 Subject: [PATCH] [NOD-597] Make BlockIndex clear its dirty entries only after it successfully written them to disk (#620) --- blockdag/blockindex.go | 7 ++++--- blockdag/dag.go | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/blockdag/blockindex.go b/blockdag/blockindex.go index 6a5a09df1..ae237d634 100644 --- a/blockdag/blockindex.go +++ b/blockdag/blockindex.go @@ -134,8 +134,9 @@ func (bi *blockIndex) flushToDBWithTx(dbTx database.Tx) error { return err } } - - // If write was successful, clear the dirty set. - bi.dirty = make(map[*blockNode]struct{}) return nil } + +func (bi *blockIndex) clearDirtyEntries() { + bi.dirty = make(map[*blockNode]struct{}) +} diff --git a/blockdag/dag.go b/blockdag/dag.go index 4c986a6e3..963dcf2c5 100644 --- a/blockdag/dag.go +++ b/blockdag/dag.go @@ -672,6 +672,7 @@ func (dag *BlockDAG) saveChangesFromBlock(block *util.Block, virtualUTXODiff *UT if err != nil { return err } + dag.index.clearDirtyEntries() dag.utxoDiffStore.clearDirtyEntries() dag.reachabilityStore.clearDirtyEntries() return nil