forked from forks/go-ethereum
This PR modifies how the metrics library handles `Enabled`: previously, the package `init` decided whether to serve real metrics or just dummy-types. This has several drawbacks: - During pkg init, we need to determine whether metrics are enabled or not. So we first hacked in a check if certain geth-specific commandline-flags were enabled. Then we added a similar check for geth-env-vars. Then we almost added a very elaborate check for toml-config-file, plus toml parsing. - Using "real" types and dummy types interchangeably means that everything is hidden behind interfaces. This has a performance penalty, and also it just adds a lot of code. This PR removes the interface stuff, uses concrete types, and allows for the setting of Enabled to happen later. It is still assumed that `metrics.Enable()` is invoked early on. The somewhat 'heavy' operations, such as ticking meters and exp-decay, now checks the enable-flag to prevent resource leak. The change may be large, but it's mostly pretty trivial, and from the last time I gutted the metrics, I ensured that we have fairly good test coverage. --------- Co-authored-by: Felix Lange <fjl@twurst.com> |
||
|---|---|---|
| .. | ||
| ancienttest | ||
| testdata | ||
| accessors_chain.go | ||
| accessors_chain_test.go | ||
| accessors_indexes.go | ||
| accessors_indexes_test.go | ||
| accessors_metadata.go | ||
| accessors_snapshot.go | ||
| accessors_state.go | ||
| accessors_sync.go | ||
| accessors_trie.go | ||
| ancient_scheme.go | ||
| ancient_utils.go | ||
| chain_freezer.go | ||
| chain_iterator.go | ||
| chain_iterator_test.go | ||
| database.go | ||
| database_test.go | ||
| freezer.go | ||
| freezer_batch.go | ||
| freezer_memory.go | ||
| freezer_memory_test.go | ||
| freezer_meta.go | ||
| freezer_meta_test.go | ||
| freezer_resettable.go | ||
| freezer_resettable_test.go | ||
| freezer_table.go | ||
| freezer_table_test.go | ||
| freezer_test.go | ||
| freezer_utils.go | ||
| freezer_utils_test.go | ||
| key_length_iterator.go | ||
| key_length_iterator_test.go | ||
| schema.go | ||
| table.go | ||
| table_test.go | ||