diff --git a/process/block/baseProcess.go b/process/block/baseProcess.go index 993c6bde9f..5b3dc64455 100644 --- a/process/block/baseProcess.go +++ b/process/block/baseProcess.go @@ -2449,7 +2449,7 @@ func (bp *baseProcessor) PruneStateOnRollback(currHeader data.HeaderHandler, cur } func (bp *baseProcessor) getPruningHandler(finalHeaderNonce uint64) state.PruningHandler { - if finalHeaderNonce-bp.lastRestartNonce <= uint64(bp.pruningDelay) { + if finalHeaderNonce < bp.lastRestartNonce || finalHeaderNonce-bp.lastRestartNonce <= uint64(bp.pruningDelay) { log.Debug("will skip pruning", "finalHeaderNonce", finalHeaderNonce, "last restart nonce", bp.lastRestartNonce, diff --git a/process/block/baseProcess_test.go b/process/block/baseProcess_test.go index 6de919c3d9..0ecd9cd0ee 100644 --- a/process/block/baseProcess_test.go +++ b/process/block/baseProcess_test.go @@ -3810,6 +3810,10 @@ func TestBaseProcessor_getPruningHandler(t *testing.T) { ph = bp.GetPruningHandler(14) assert.True(t, ph.IsPruningEnabled()) + bp.SetLastRestartNonce(15) + ph = bp.GetPruningHandler(14) + assert.False(t, ph.IsPruningEnabled()) + bp.SetClosingNodeStarted(true) ph = bp.GetPruningHandler(14) assert.False(t, ph.IsPruningEnabled())