diff --git a/cmd/geth/config.go b/cmd/geth/config.go index 8c06677167..33a3eadea8 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -375,9 +375,6 @@ func applyMetricConfig(ctx *cli.Context, cfg *gethConfig) { if ctx.IsSet(utils.MetricsInfluxDBOrganizationFlag.Name) { cfg.Metrics.InfluxDBOrganization = ctx.String(utils.MetricsInfluxDBOrganizationFlag.Name) } - if ctx.IsSet(utils.MetricsStateSizeFlag.Name) { - cfg.Metrics.EnableStateSizeTracking = ctx.Bool(utils.MetricsStateSizeFlag.Name) - } // Sanity-check the commandline flags. It is fine if some unused fields is part // of the toml-config, but we expect the commandline to only contain relevant // arguments, otherwise it indicates an error. diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index b58249a637..e39a13db96 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -970,7 +970,7 @@ Please note that --` + MetricsHTTPFlag.Name + ` must be set to start the server. MetricsStateSizeFlag = &cli.BoolFlag{ Name: "metrics.statesize", Usage: "Enable state size tracking for metrics collection", - Value: metrics.DefaultConfig.EnableStateSizeTracking, + Value: ethconfig.Defaults.EnableStateSizeTracking, Category: flags.MetricsCategory, } ) @@ -1733,6 +1733,11 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { cfg.EthDiscoveryURLs = SplitAndTrim(urls) } } + + if ctx.Bool(MetricsEnabledFlag.Name) && ctx.Bool(MetricsStateSizeFlag.Name) { + log.Error("Enabling state size metrics") + cfg.EnableStateSizeTracking = true + } // Override any default configs for hard coded networks. switch { case ctx.Bool(MainnetFlag.Name): @@ -2225,10 +2230,6 @@ func MakeChain(ctx *cli.Context, stack *node.Node, readonly bool) (*core.BlockCh } else if ctx.IsSet(CacheFlag.Name) || ctx.IsSet(CacheSnapshotFlag.Name) { options.SnapshotLimit = ctx.Int(CacheFlag.Name) * ctx.Int(CacheSnapshotFlag.Name) / 100 } - if ctx.Bool(MetricsStateSizeFlag.Name) { - log.Info("Enabling state size tracking") - options.EnableStateSizeTracking = true - } // If we're in readonly, do not bother generating snapshot data. if readonly { options.SnapshotNoBuild = true diff --git a/eth/backend.go b/eth/backend.go index 7616ec9d31..ef28878a2d 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -240,7 +240,8 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { // within the data directory. The corresponding paths will be either: // - DATADIR/triedb/merkle.journal // - DATADIR/triedb/verkle.journal - TrieJournalDirectory: stack.ResolvePath("triedb"), + TrieJournalDirectory: stack.ResolvePath("triedb"), + EnableStateSizeTracking: config.EnableStateSizeTracking, } ) if config.VMTrace != "" { diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index 82c3c500a7..dc77141081 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -144,6 +144,9 @@ type Config struct { // Enables tracking of SHA3 preimages in the VM EnablePreimageRecording bool + // Enables tracking of state size + EnableStateSizeTracking bool + // Enables VM tracing VMTrace string VMTraceJsonConfig string diff --git a/metrics/config.go b/metrics/config.go index ea916b3673..72f94dd194 100644 --- a/metrics/config.go +++ b/metrics/config.go @@ -33,8 +33,6 @@ type Config struct { InfluxDBToken string `toml:",omitempty"` InfluxDBBucket string `toml:",omitempty"` InfluxDBOrganization string `toml:",omitempty"` - - EnableStateSizeTracking bool `toml:",omitempty"` } // DefaultConfig is the default config for metrics used in go-ethereum. @@ -55,6 +53,4 @@ var DefaultConfig = Config{ InfluxDBToken: "test", InfluxDBBucket: "geth", InfluxDBOrganization: "geth", - - EnableStateSizeTracking: false, }