From ce064cf2d58b2cb7deb921996d7a8ea367705661 Mon Sep 17 00:00:00 2001 From: Quentin McGaw Date: Fri, 6 Jan 2023 16:08:39 +0000 Subject: [PATCH] Do not try to prune for genesis block --- dot/node.go | 2 +- dot/services.go | 2 +- internal/pruner/full/pruning.go | 5 +++++ internal/pruner/full/pruning_test.go | 6 ++++++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/dot/node.go b/dot/node.go index 92e0e8f19f5..31f09222d8d 100644 --- a/dot/node.go +++ b/dot/node.go @@ -166,7 +166,7 @@ func (*nodeBuilder) initNode(cfg *Config) error { LogLevel: cfg.Global.LogLvl, PrunerCfg: state.PrunerConfig{ Enabled: cfg.Global.Pruning, - RetainBlocks: uint32(cfg.Global.RetainBlocks), + RetainBlocks: cfg.Global.RetainBlocks, }, Telemetry: telemetryMailer, Metrics: metrics.NewIntervalConfig(cfg.Global.PublishMetrics), diff --git a/dot/services.go b/dot/services.go index bbb4999d918..fb1048b03a6 100644 --- a/dot/services.go +++ b/dot/services.go @@ -66,7 +66,7 @@ func (nodeBuilder) createStateService(cfg *Config) (*state.Service, error) { LogLevel: cfg.Log.StateLvl, PrunerCfg: state.PrunerConfig{ Enabled: cfg.Global.Pruning, - RetainBlocks: uint32(cfg.Global.RetainBlocks), + RetainBlocks: cfg.Global.RetainBlocks, }, Metrics: metrics.NewIntervalConfig(cfg.Global.PublishMetrics), } diff --git a/internal/pruner/full/pruning.go b/internal/pruner/full/pruning.go index 268c5f9039b..8305fa89511 100644 --- a/internal/pruner/full/pruning.go +++ b/internal/pruner/full/pruning.go @@ -50,6 +50,11 @@ func (p *Pruner) pruneAll(journalDBBatch PutDeleter) (err error) { func prune(blockNumberToPrune uint32, journalDB Getter, journalDBBatch Deleter, storageBatch Deleter) (err error) { + if blockNumberToPrune == 0 { + // There is no deletion in the first block, so nothing can be pruned. + return nil + } + blockHashes, err := loadBlockHashes(blockNumberToPrune, journalDB) if err != nil { return fmt.Errorf("loading block hashes for block number to prune: %w", err) diff --git a/internal/pruner/full/pruning_test.go b/internal/pruner/full/pruning_test.go index 28043c61c32..1ca7ad759cf 100644 --- a/internal/pruner/full/pruning_test.go +++ b/internal/pruner/full/pruning_test.go @@ -250,6 +250,12 @@ func Test_prune(t *testing.T) { errWrapped error errMessage string }{ + "nothing to do for block number 0": { + blockNumberToPrune: 0, + journalDBBuilder: func(ctrl *gomock.Controller) Getter { return nil }, + journalBatchBuilder: func(_ *gomock.Controller) Deleter { return nil }, + storageBatchBuilder: func(_ *gomock.Controller) Deleter { return nil }, + }, "load block hashes error": { blockNumberToPrune: 1, journalDBBuilder: func(ctrl *gomock.Controller) Getter {