mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-08 23:18:15 -05:00
Implement beacon db pruner (#14687)
* implement weak subjectivity pruner * fix goimports * add delete before slot method to database * add method to interface * update changelog * add flags * wire pruner * align pruner with backfill service * rename db method * fix imports * delete block slot indices * check for backfill and initial sync * add tests * fix imports * Update beacon-chain/db/kv/blocks.go Co-authored-by: Radosław Kapka <rkapka@wp.pl> * Update cmd/beacon-chain/flags/base.go Co-authored-by: Preston Van Loon <pvanloon@offchainlabs.com> * Update beacon-chain/db/pruner/pruner.go Co-authored-by: Radosław Kapka <rkapka@wp.pl> * cleanup * fix buildkite * initialise atomic bool * delete data from remaining buckets * fix build * fix build * address review comments * add test for blockParentRootIndicesBucket * fix changelog * fix build * address kasey's comments * fix build * add trace span to blockRootsBySlotRange --------- Co-authored-by: Radosław Kapka <rkapka@wp.pl> Co-authored-by: Preston Van Loon <pvanloon@offchainlabs.com>
This commit is contained in:
@@ -29,6 +29,7 @@ import (
|
||||
"github.com/prysmaticlabs/prysm/v5/beacon-chain/db"
|
||||
"github.com/prysmaticlabs/prysm/v5/beacon-chain/db/filesystem"
|
||||
"github.com/prysmaticlabs/prysm/v5/beacon-chain/db/kv"
|
||||
"github.com/prysmaticlabs/prysm/v5/beacon-chain/db/pruner"
|
||||
"github.com/prysmaticlabs/prysm/v5/beacon-chain/db/slasherkv"
|
||||
"github.com/prysmaticlabs/prysm/v5/beacon-chain/execution"
|
||||
"github.com/prysmaticlabs/prysm/v5/beacon-chain/forkchoice"
|
||||
@@ -369,6 +370,13 @@ func registerServices(cliCtx *cli.Context, beacon *BeaconNode, synchronizer *sta
|
||||
}
|
||||
}
|
||||
|
||||
if cliCtx.Bool(flags.BeaconDBPruning.Name) {
|
||||
log.Debugln("Registering Pruner Service")
|
||||
if err := beacon.registerPrunerService(cliCtx); err != nil {
|
||||
return errors.Wrap(err, "could not register pruner service")
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -1089,6 +1097,34 @@ func (b *BeaconNode) registerBuilderService(cliCtx *cli.Context) error {
|
||||
return b.services.RegisterService(svc)
|
||||
}
|
||||
|
||||
func (b *BeaconNode) registerPrunerService(cliCtx *cli.Context) error {
|
||||
genesisTimeUnix := params.BeaconConfig().MinGenesisTime + params.BeaconConfig().GenesisDelay
|
||||
var backfillService *backfill.Service
|
||||
if err := b.services.FetchService(&backfillService); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var opts []pruner.ServiceOption
|
||||
if cliCtx.IsSet(flags.PrunerRetentionEpochs.Name) {
|
||||
uv := cliCtx.Uint64(flags.PrunerRetentionEpochs.Name)
|
||||
opts = append(opts, pruner.WithRetentionPeriod(primitives.Epoch(uv)))
|
||||
}
|
||||
|
||||
p, err := pruner.New(
|
||||
cliCtx.Context,
|
||||
b.db,
|
||||
genesisTimeUnix,
|
||||
initSyncWaiter(cliCtx.Context, b.initialSyncComplete),
|
||||
backfillService.WaitForCompletion,
|
||||
opts...,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return b.services.RegisterService(p)
|
||||
}
|
||||
|
||||
func (b *BeaconNode) RegisterBackfillService(cliCtx *cli.Context, bfs *backfill.Store) error {
|
||||
pa := peers.NewAssigner(b.fetchP2P().Peers(), b.forkChoicer)
|
||||
bf, err := backfill.NewService(cliCtx.Context, bfs, b.BlobStorage, b.clockWaiter, b.fetchP2P(), pa, b.BackfillOpts...)
|
||||
|
||||
Reference in New Issue
Block a user