@@ -12,6 +12,7 @@ import (
1212 "github.com/evstack/ev-node/block/internal/common"
1313 da "github.com/evstack/ev-node/block/internal/da"
1414 "github.com/evstack/ev-node/block/internal/executing"
15+ "github.com/evstack/ev-node/block/internal/pruner"
1516 "github.com/evstack/ev-node/block/internal/reaping"
1617 "github.com/evstack/ev-node/block/internal/submitting"
1718 "github.com/evstack/ev-node/block/internal/syncing"
@@ -29,6 +30,7 @@ import (
2930// Components represents the block-related components
3031type Components struct {
3132 Executor * executing.Executor
33+ Pruner * pruner.Pruner
3234 Reaper * reaping.Reaper
3335 Syncer * syncing.Syncer
3436 Submitter * submitting.Submitter
@@ -60,6 +62,11 @@ func (bc *Components) Start(ctx context.Context) error {
6062 return fmt .Errorf ("failed to start executor: %w" , err )
6163 }
6264 }
65+ if bc .Pruner != nil {
66+ if err := bc .Pruner .Start (ctxWithCancel ); err != nil {
67+ return fmt .Errorf ("failed to start pruner: %w" , err )
68+ }
69+ }
6370 if bc .Reaper != nil {
6471 if err := bc .Reaper .Start (ctxWithCancel ); err != nil {
6572 return fmt .Errorf ("failed to start reaper: %w" , err )
@@ -96,6 +103,11 @@ func (bc *Components) Stop() error {
96103 errs = errors .Join (errs , fmt .Errorf ("failed to stop executor: %w" , err ))
97104 }
98105 }
106+ if bc .Pruner != nil {
107+ if err := bc .Pruner .Stop (); err != nil {
108+ errs = errors .Join (errs , fmt .Errorf ("failed to stop pruner: %w" , err ))
109+ }
110+ }
99111 if bc .Reaper != nil {
100112 if err := bc .Reaper .Stop (); err != nil {
101113 errs = errors .Join (errs , fmt .Errorf ("failed to stop reaper: %w" , err ))
@@ -166,6 +178,12 @@ func NewSyncComponents(
166178 syncer .SetBlockSyncer (syncing .WithTracingBlockSyncer (syncer ))
167179 }
168180
181+ var execPruner coreexecutor.ExecPruner
182+ if p , ok := exec .(coreexecutor.ExecPruner ); ok {
183+ execPruner = p
184+ }
185+ pruner := pruner .New (logger , store , execPruner , config .Pruning , config .Node .BlockTime .Duration )
186+
169187 // Create submitter for sync nodes (no signer, only DA inclusion processing)
170188 var daSubmitter submitting.DASubmitterAPI = submitting .NewDASubmitter (daClient , config , genesis , blockOpts , metrics , logger , headerDAHintAppender , dataDAHintAppender )
171189 if config .Instrumentation .IsTracingEnabled () {
@@ -189,6 +207,7 @@ func NewSyncComponents(
189207 Syncer : syncer ,
190208 Submitter : submitter ,
191209 Cache : cacheManager ,
210+ Pruner : pruner ,
192211 errorCh : errorCh ,
193212 }, nil
194213}
@@ -248,6 +267,12 @@ func NewAggregatorComponents(
248267 executor .SetBlockProducer (executing .WithTracingBlockProducer (executor ))
249268 }
250269
270+ var execPruner coreexecutor.ExecPruner
271+ if p , ok := exec .(coreexecutor.ExecPruner ); ok {
272+ execPruner = p
273+ }
274+ pruner := pruner .New (logger , store , execPruner , config .Pruning , config .Node .BlockTime .Duration )
275+
251276 reaper , err := reaping .NewReaper (
252277 exec ,
253278 sequencer ,
@@ -264,6 +289,7 @@ func NewAggregatorComponents(
264289 if config .Node .BasedSequencer { // no submissions needed for bases sequencer
265290 return & Components {
266291 Executor : executor ,
292+ Pruner : pruner ,
267293 Reaper : reaper ,
268294 Cache : cacheManager ,
269295 errorCh : errorCh ,
@@ -290,6 +316,7 @@ func NewAggregatorComponents(
290316
291317 return & Components {
292318 Executor : executor ,
319+ Pruner : pruner ,
293320 Reaper : reaper ,
294321 Submitter : submitter ,
295322 Cache : cacheManager ,
0 commit comments