Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

E2 snapshot uploading #9056

Merged
merged 78 commits into from
Dec 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
4143702
working upload of mumbai history
mh0lt Oct 19, 2023
77a8f06
added min block processing
mh0lt Oct 21, 2023
cbd4625
retrieve initial torrent hashes from remote
mh0lt Oct 22, 2023
21a4b72
Moved setting of segment min earlier in the initialization process
mh0lt Oct 22, 2023
af3b181
base progress on headers - they are alost slower than bor
mh0lt Oct 22, 2023
c6e376b
added uplo9ad running check
mh0lt Oct 23, 2023
d6e6055
Fix panic in isAgra check for txpool
mh0lt Oct 23, 2023
7bd8278
fixes for eth based chains
mh0lt Oct 26, 2023
df46494
Merge branch 'devel' of https://github.com/ledgerwatch/erigon into devel
mh0lt Oct 27, 2023
e276ce9
Merge branch 'devel' into e2_snapshot_uploading
mh0lt Oct 27, 2023
a84012a
apped parallel transaction parsing to tx dump
mh0lt Oct 28, 2023
fef6cbc
make service start continue on error if more to do
mh0lt Oct 29, 2023
6240732
Fix unknown file/permission denied errors on rename
mh0lt Oct 29, 2023
aed0383
add logger
mh0lt Oct 29, 2023
c185f74
warn on error
mh0lt Oct 29, 2023
3981bae
ajusted logging
mh0lt Oct 29, 2023
423a7dc
don't check missing indexes while still retiring blocks
mh0lt Oct 29, 2023
e0de98f
remove created log
mh0lt Oct 29, 2023
ec64427
Added pos transition processing
mh0lt Oct 30, 2023
fe8a401
Merge branch 'devel' into e2_snapshot_uploading
mh0lt Nov 7, 2023
d1b49ff
merge edits
mh0lt Nov 7, 2023
dbfec78
Merge branch 'devel' into e2_snapshot_uploading
mh0lt Nov 17, 2023
5a568c1
Merge branch 'devel' into e2_snapshot_uploading
mh0lt Nov 21, 2023
545a235
added snapshotversion to snapshot file readers
mh0lt Nov 26, 2023
8def1b6
running snapshot cmp
mh0lt Nov 29, 2023
525336a
Merge branch 'devel' into e2_snapshot_uploading
mh0lt Dec 2, 2023
58b896b
use downloader rclone for uploading
mh0lt Dec 2, 2023
756dd57
added copy operation and latest block download
mh0lt Dec 5, 2023
65354e0
added last file download and fixed downloding version issues
mh0lt Dec 6, 2023
42f4fac
Merge branch 'devel' into e2_snapshot_uploading
mh0lt Dec 7, 2023
4bc2f92
added headers to pipeline
mh0lt Dec 7, 2023
9c24bf6
fixed bor snapshot versioning
mh0lt Dec 7, 2023
1b8cfe8
fixes for bor snapshot processing at startup
mh0lt Dec 8, 2023
2f76f5e
Merge branch 'devel' into e2_snapshot_uploading
mh0lt Dec 8, 2023
9ac14ac
added manifest processing
mh0lt Dec 9, 2023
c63c00c
add update all flag
mh0lt Dec 11, 2023
ea58df4
Merge branch 'devel' into e2_snapshot_uploading
mh0lt Dec 11, 2023
77fda8c
added log labels for stats and fixed missing removes of bor segments …
mh0lt Dec 12, 2023
c4d5791
fix bor merge limit
mh0lt Dec 12, 2023
8010607
added manifest update fix and worker setting for upload
mh0lt Dec 13, 2023
02da5be
updated header check to avoid overruns
mh0lt Dec 15, 2023
bfd3bfe
fix locator parsing
mh0lt Dec 15, 2023
1bc47fe
fixed issues added verify
mh0lt Dec 16, 2023
b960953
remove printer
mh0lt Dec 16, 2023
d18c8d9
updated cmp & copy
mh0lt Dec 16, 2023
986019a
added more parallel execution
mh0lt Dec 16, 2023
72b4ae9
fixed logging initialization
mh0lt Dec 17, 2023
5dd3025
remove flags from main
mh0lt Dec 17, 2023
33fe185
remove --snapshot.version - use KnownCfg instead
mh0lt Dec 17, 2023
7785008
only update pv's on override
mh0lt Dec 17, 2023
79606b1
update experimental values to flags for stage loop control
mh0lt Dec 18, 2023
521880e
fix init snapshot configs
mh0lt Dec 19, 2023
81fadd0
use correct flag for prune
mh0lt Dec 19, 2023
d5b883d
ask known config for specific version
mh0lt Dec 20, 2023
e232428
Merge branch 'devel' into e2_snapshot_uploading
mh0lt Dec 20, 2023
10f8506
post merge updates
mh0lt Dec 21, 2023
eb9a2b3
added readmes
mh0lt Dec 21, 2023
1c05790
Merge branch 'devel' into e2_snapshot_uploading
mh0lt Dec 21, 2023
0f9e1a3
fix torrent naming changes
mh0lt Dec 21, 2023
d46d6f8
change prune/retire ordering so retire is activated during pruning
mh0lt Dec 21, 2023
966bbab
Merge branch 'devel' into e2_snapshot_uploading
mh0lt Dec 22, 2023
1adf7da
add disk options config
mh0lt Dec 22, 2023
9c44689
typos
mh0lt Dec 22, 2023
1172e6e
added upload to local fs
mh0lt Dec 22, 2023
61d05b3
change _group to group for rclone stats
mh0lt Dec 22, 2023
c97bfda
Merge branch 'devel' into e2_snapshot_uploading
mh0lt Dec 23, 2023
39b1443
added merge fixes
mh0lt Dec 23, 2023
b01697c
fix retire loop conditions
mh0lt Dec 23, 2023
89672a2
fix slices package dependency
mh0lt Dec 23, 2023
3010175
fix lint errors
mh0lt Dec 23, 2023
19e0a6a
fix lint errors
mh0lt Dec 23, 2023
17225f4
fix lint errors
mh0lt Dec 23, 2023
6f7a953
fix lint errors
mh0lt Dec 23, 2023
cf6b1d2
Merge branch 'devel' into e2_snapshot_uploading
mh0lt Dec 24, 2023
7b7dd4c
post merge fixes
mh0lt Dec 24, 2023
bc565e0
Merge branch 'devel' into e2_snapshot_uploading
mh0lt Dec 27, 2023
b29c330
fixed compile errors
mh0lt Dec 27, 2023
426e30a
updated sync simulator
mh0lt Dec 27, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -98,3 +98,5 @@ node_modules
/config.toml
/config.yaml
/config.yml

vendor
2 changes: 2 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,8 @@ COMMANDS += sentinel
COMMANDS += caplin
COMMANDS += caplin-regression
COMMANDS += tooling
COMMANDS += snapshots




Expand Down
6 changes: 3 additions & 3 deletions cl/antiquary/antiquary.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ func (a *Antiquary) Loop() error {
if to-from < snaptype.Erigon2MergeLimit {
continue
}
if err := a.antiquate(from, to); err != nil {
if err := a.antiquate(a.sn.Version(), from, to); err != nil {
return err
}
case <-a.ctx.Done():
Expand All @@ -218,12 +218,12 @@ func (a *Antiquary) Loop() error {
}

// Antiquate will antiquate a specific block range (aka. retire snapshots), this should be ran in the background.
func (a *Antiquary) antiquate(from, to uint64) error {
func (a *Antiquary) antiquate(version uint8, from, to uint64) error {
if a.downloader == nil {
return nil // Just skip if we don't have a downloader
}
log.Info("[Antiquary]: Antiquating", "from", from, "to", to)
if err := freezeblocks.DumpBeaconBlocks(a.ctx, a.mainDB, a.beaconDB, from, to, snaptype.Erigon2MergeLimit, a.dirs.Tmp, a.dirs.Snap, 1, log.LvlDebug, a.logger); err != nil {
if err := freezeblocks.DumpBeaconBlocks(a.ctx, a.mainDB, a.beaconDB, version, from, to, snaptype.Erigon2MergeLimit, a.dirs.Tmp, a.dirs.Snap, 1, log.LvlDebug, a.logger); err != nil {
return err
}

Expand Down
30 changes: 23 additions & 7 deletions cmd/capcli/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,9 @@ func (c *Chain) Run(ctx *Context) error {
log.Info("Started chain download", "chain", c.Chain)

dirs := datadir.New(c.Datadir)
csn := freezeblocks.NewCaplinSnapshots(ethconfig.BlocksFreezing{}, beaconConfig, dirs.Snap, log.Root())
snapshotVersion := snapcfg.KnownCfg(c.Chain, 0).Version

csn := freezeblocks.NewCaplinSnapshots(ethconfig.BlocksFreezing{}, beaconConfig, dirs.Snap, snapshotVersion, log.Root())

rawDB, _ := persistence.AferoRawBeaconBlockChainFromOsPath(beaconConfig, dirs.CaplinHistory)
beaconDB, db, err := caplin1.OpenCaplinDatabase(ctx, db_config.DatabaseConfiguration{PruneDepth: math.MaxUint64}, beaconConfig, rawDB, dirs.CaplinIndexing, nil, false)
Expand Down Expand Up @@ -592,7 +594,9 @@ func (c *DumpSnapshots) Run(ctx *Context) error {
return
})

return freezeblocks.DumpBeaconBlocks(ctx, db, beaconDB, 0, to, snaptype.Erigon2MergeLimit, dirs.Tmp, dirs.Snap, estimate.CompressSnapshot.Workers(), log.LvlInfo, log.Root())
snapshotVersion := snapcfg.KnownCfg(c.Chain, 0).Version

return freezeblocks.DumpBeaconBlocks(ctx, db, beaconDB, snapshotVersion, 0, to, snaptype.Erigon2MergeLimit, dirs.Tmp, dirs.Snap, estimate.CompressSnapshot.Workers(), log.LvlInfo, log.Root())
}

type CheckSnapshots struct {
Expand Down Expand Up @@ -630,8 +634,9 @@ func (c *CheckSnapshots) Run(ctx *Context) error {
}

to = (to / snaptype.Erigon2MergeLimit) * snaptype.Erigon2MergeLimit
snapshotVersion := snapcfg.KnownCfg(c.Chain, 0).Version

csn := freezeblocks.NewCaplinSnapshots(ethconfig.BlocksFreezing{}, beaconConfig, dirs.Snap, log.Root())
csn := freezeblocks.NewCaplinSnapshots(ethconfig.BlocksFreezing{}, beaconConfig, dirs.Snap, snapshotVersion, log.Root())
if err := csn.ReopenFolder(); err != nil {
return err
}
Expand Down Expand Up @@ -712,7 +717,9 @@ func (c *LoopSnapshots) Run(ctx *Context) error {

to = (to / snaptype.Erigon2MergeLimit) * snaptype.Erigon2MergeLimit

csn := freezeblocks.NewCaplinSnapshots(ethconfig.BlocksFreezing{}, beaconConfig, dirs.Snap, log.Root())
snapshotVersion := snapcfg.KnownCfg(c.Chain, 0).Version

csn := freezeblocks.NewCaplinSnapshots(ethconfig.BlocksFreezing{}, beaconConfig, dirs.Snap, snapshotVersion, log.Root())
if err := csn.ReopenFolder(); err != nil {
return err
}
Expand Down Expand Up @@ -782,7 +789,14 @@ func (d *DownloadSnapshots) Run(ctx *Context) error {
if err != nil {
return fmt.Errorf("new server: %w", err)
}
return snapshotsync.WaitForDownloader("CapCliDownloader", ctx, false, snapshotsync.OnlyCaplin, s, tx, freezeblocks.NewBlockReader(freezeblocks.NewRoSnapshots(ethconfig.NewSnapCfg(false, false, false), dirs.Snap, log.Root()), freezeblocks.NewBorRoSnapshots(ethconfig.NewSnapCfg(false, false, false), dirs.Snap, log.Root())), params.ChainConfigByChainName(d.Chain), direct.NewDownloaderClient(bittorrentServer))

snapshotVersion := snapcfg.KnownCfg(d.Chain, 0).Version

return snapshotsync.WaitForDownloader(ctx, "CapCliDownloader", false, snapshotsync.OnlyCaplin, s, tx,
freezeblocks.NewBlockReader(
freezeblocks.NewRoSnapshots(ethconfig.NewSnapCfg(false, false, false), dirs.Snap, snapshotVersion, log.Root()),
freezeblocks.NewBorRoSnapshots(ethconfig.NewSnapCfg(false, false, false), dirs.Snap, snapshotVersion, log.Root())),
params.ChainConfigByChainName(d.Chain), direct.NewDownloaderClient(bittorrentServer))
}

type RetrieveHistoricalState struct {
Expand Down Expand Up @@ -811,7 +825,9 @@ func (r *RetrieveHistoricalState) Run(ctx *Context) error {
return err
}
defer tx.Rollback()
allSnapshots := freezeblocks.NewRoSnapshots(ethconfig.BlocksFreezing{}, dirs.Snap, log.Root())
snapshotVersion := snapcfg.KnownCfg(r.Chain, 0).Version

allSnapshots := freezeblocks.NewRoSnapshots(ethconfig.BlocksFreezing{}, dirs.Snap, snapshotVersion, log.Root())
if err := allSnapshots.ReopenFolder(); err != nil {
return err
}
Expand All @@ -822,7 +838,7 @@ func (r *RetrieveHistoricalState) Run(ctx *Context) error {
var bor *freezeblocks.BorRoSnapshots
blockReader := freezeblocks.NewBlockReader(allSnapshots, bor)
eth1Getter := getters.NewExecutionSnapshotReader(ctx, beaconConfig, blockReader, db)
csn := freezeblocks.NewCaplinSnapshots(ethconfig.BlocksFreezing{}, beaconConfig, dirs.Snap, log.Root())
csn := freezeblocks.NewCaplinSnapshots(ethconfig.BlocksFreezing{}, beaconConfig, dirs.Snap, snapshotVersion, log.Root())
if err := csn.ReopenFolder(); err != nil {
return err
}
Expand Down
4 changes: 2 additions & 2 deletions cmd/caplin/caplin1/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ func OpenCaplinDatabase(ctx context.Context,

func RunCaplinPhase1(ctx context.Context, sentinel sentinel.SentinelClient, engine execution_client.ExecutionEngine,
beaconConfig *clparams.BeaconChainConfig, genesisConfig *clparams.GenesisConfig, state *state.CachingBeaconState,
caplinFreezer freezer.Freezer, dirs datadir.Dirs, cfg beacon_router_configuration.RouterConfiguration, eth1Getter snapshot_format.ExecutionBlockReaderByNumber,
caplinFreezer freezer.Freezer, dirs datadir.Dirs, snapshotVersion uint8, cfg beacon_router_configuration.RouterConfiguration, eth1Getter snapshot_format.ExecutionBlockReaderByNumber,
snDownloader proto_downloader.DownloaderClient, backfilling bool, states bool, historyDB persistence.BeaconChainDatabase, indexDB kv.RwDB) error {
rawDB, af := persistence.AferoRawBeaconBlockChainFromOsPath(beaconConfig, dirs.CaplinHistory)

Expand All @@ -98,7 +98,7 @@ func RunCaplinPhase1(ctx context.Context, sentinel sentinel.SentinelClient, engi

logger := log.New("app", "caplin")

csn := freezeblocks.NewCaplinSnapshots(ethconfig.BlocksFreezing{}, beaconConfig, dirs.Snap, logger)
csn := freezeblocks.NewCaplinSnapshots(ethconfig.BlocksFreezing{}, beaconConfig, dirs.Snap, snapshotVersion, logger)
rcsn := freezeblocks.NewBeaconSnapshotReader(csn, eth1Getter, historyDB, beaconConfig)

if caplinFreezer != nil {
Expand Down
5 changes: 4 additions & 1 deletion cmd/caplin/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (
"fmt"
"os"

"github.com/ledgerwatch/erigon-lib/chain/snapcfg"
"github.com/ledgerwatch/erigon/cl/beacon/beacon_router_configuration"
"github.com/ledgerwatch/erigon/cl/cltypes"
"github.com/ledgerwatch/erigon/cl/fork"
Expand Down Expand Up @@ -128,7 +129,9 @@ func runCaplinNode(cliCtx *cli.Context) error {
return err
}

return caplin1.RunCaplinPhase1(ctx, sentinel, executionEngine, cfg.BeaconCfg, cfg.GenesisCfg, state, caplinFreezer, cfg.Dirs, beacon_router_configuration.RouterConfiguration{
snapshotVersion := snapcfg.KnownCfg(cliCtx.String(utils.ChainFlag.Name), 0).Version

return caplin1.RunCaplinPhase1(ctx, sentinel, executionEngine, cfg.BeaconCfg, cfg.GenesisCfg, state, caplinFreezer, cfg.Dirs, snapshotVersion, beacon_router_configuration.RouterConfiguration{
Protocol: cfg.BeaconProtocol,
Address: cfg.BeaconAddr,
ReadTimeTimeout: cfg.BeaconApiReadTimeout,
Expand Down
2 changes: 1 addition & 1 deletion cmd/devnet/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ func setupLogger(ctx *cli.Context) (log.Logger, error) {
return nil, err
}

logger := logging.SetupLoggerCtx("devnet", ctx, false /* rootLogger */)
logger := logging.SetupLoggerCtx("devnet", ctx, log.LvlInfo, log.LvlInfo, false /* rootLogger */)

// Make root logger fail
log.Root().SetHandler(PanicHandler{})
Expand Down
11 changes: 7 additions & 4 deletions cmd/downloader/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import (
"github.com/ledgerwatch/erigon-lib/common/datadir"
"github.com/ledgerwatch/erigon-lib/common/dir"
"github.com/ledgerwatch/erigon-lib/downloader"
downloadercfg2 "github.com/ledgerwatch/erigon-lib/downloader/downloadercfg"
"github.com/ledgerwatch/erigon-lib/downloader/downloadercfg"
"github.com/ledgerwatch/erigon-lib/downloader/snaptype"
proto_downloader "github.com/ledgerwatch/erigon-lib/gointerfaces/downloader"
"github.com/ledgerwatch/erigon-lib/kv"
Expand Down Expand Up @@ -164,7 +164,7 @@ func Downloader(ctx context.Context, logger log.Logger) error {
if err := checkChainName(ctx, dirs, chain); err != nil {
return err
}
torrentLogLevel, _, err := downloadercfg2.Int2LogLevel(torrentVerbosity)
torrentLogLevel, _, err := downloadercfg.Int2LogLevel(torrentVerbosity)
if err != nil {
return err
}
Expand All @@ -186,7 +186,7 @@ func Downloader(ctx context.Context, logger log.Logger) error {
if known, ok := snapcfg.KnownWebseeds[chain]; ok {
webseedsList = append(webseedsList, known...)
}
cfg, err := downloadercfg2.New(dirs, version, torrentLogLevel, downloadRate, uploadRate, torrentPort, torrentConnsPerFile, torrentDownloadSlots, staticPeers, webseedsList, chain)
cfg, err := downloadercfg.New(dirs, version, torrentLogLevel, downloadRate, uploadRate, torrentPort, torrentConnsPerFile, torrentDownloadSlots, staticPeers, webseedsList, chain)
if err != nil {
return err
}
Expand All @@ -201,6 +201,8 @@ func Downloader(ctx context.Context, logger log.Logger) error {
}
downloadernat.DoNat(natif, cfg.ClientConfig, logger)

cfg.AddTorrentsFromDisk = true // always true unless using uploader - which wants control of torrent files

d, err := downloader.New(ctx, cfg, dirs, logger, log.LvlInfo, seedbox)
if err != nil {
return err
Expand Down Expand Up @@ -402,6 +404,7 @@ func doPrintTorrentHashes(ctx context.Context, logger log.Logger) error {
if err != nil {
return err
}

for _, t := range torrents {
// we don't release commitment history in this time. let's skip it here.
if strings.HasPrefix(t.DisplayName, "history/v1-commitment") || strings.HasPrefix(t.DisplayName, "idx/v1-commitment") {
Expand Down Expand Up @@ -494,7 +497,7 @@ func StartGrpc(snServer *downloader.GrpcServer, addr string, creds *credentials.

// Add pre-configured
func addPreConfiguredHashes(ctx context.Context, d *downloader.Downloader) error {
for _, it := range snapcfg.KnownCfg(chain).Preverified {
for _, it := range snapcfg.KnownCfg(chain, 0).Preverified {
if err := d.AddMagnetLink(ctx, snaptype.Hex2InfoHash(it.Hash), it.Name); err != nil {
return err
}
Expand Down
Loading
Loading