cmd/utils, eth: disallow invalid snap sync / snapshot flag combos (#28657)
* eth: prevent startup in snap mode without snapshots * cmd/utils: try to fix bad flag combos wrt snap sync and snapshot generation
This commit is contained in:
parent
fff843cfaf
commit
d98d70f670
@ -1677,10 +1677,16 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
|
|||||||
if ctx.IsSet(CacheLogSizeFlag.Name) {
|
if ctx.IsSet(CacheLogSizeFlag.Name) {
|
||||||
cfg.FilterLogCacheSize = ctx.Int(CacheLogSizeFlag.Name)
|
cfg.FilterLogCacheSize = ctx.Int(CacheLogSizeFlag.Name)
|
||||||
}
|
}
|
||||||
if !ctx.Bool(SnapshotFlag.Name) {
|
if !ctx.Bool(SnapshotFlag.Name) || cfg.SnapshotCache == 0 {
|
||||||
// If snap-sync is requested, this flag is also required
|
// If snap-sync is requested, this flag is also required
|
||||||
if cfg.SyncMode == downloader.SnapSync {
|
if cfg.SyncMode == downloader.SnapSync {
|
||||||
log.Info("Snap sync requested, enabling --snapshot")
|
if !ctx.Bool(SnapshotFlag.Name) {
|
||||||
|
log.Warn("Snap sync requested, enabling --snapshot")
|
||||||
|
}
|
||||||
|
if cfg.SnapshotCache == 0 {
|
||||||
|
log.Warn("Snap sync requested, resetting --cache.snapshot")
|
||||||
|
cfg.SnapshotCache = ctx.Int(CacheFlag.Name) * CacheSnapshotFlag.Value / 100
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
cfg.TrieCleanCache += cfg.SnapshotCache
|
cfg.TrieCleanCache += cfg.SnapshotCache
|
||||||
cfg.SnapshotCache = 0 // Disabled
|
cfg.SnapshotCache = 0 // Disabled
|
||||||
|
@ -178,6 +178,10 @@ func newHandler(config *handlerConfig) (*handler, error) {
|
|||||||
log.Info("Enabled snap sync", "head", head.Number, "hash", head.Hash())
|
log.Info("Enabled snap sync", "head", head.Number, "hash", head.Hash())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// If snap sync is requested but snapshots are disabled, fail loudly
|
||||||
|
if h.snapSync.Load() && config.Chain.Snapshots() == nil {
|
||||||
|
return nil, errors.New("snap sync not supported with snapshots disabled")
|
||||||
|
}
|
||||||
// Construct the downloader (long sync)
|
// Construct the downloader (long sync)
|
||||||
h.downloader = downloader.New(config.Database, h.eventMux, h.chain, nil, h.removePeer, h.enableSyncedFeatures)
|
h.downloader = downloader.New(config.Database, h.eventMux, h.chain, nil, h.removePeer, h.enableSyncedFeatures)
|
||||||
if ttd := h.chain.Config().TerminalTotalDifficulty; ttd != nil {
|
if ttd := h.chain.Config().TerminalTotalDifficulty; ttd != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user