9045b79bc2
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> |
||
---|---|---|
.. | ||
api.go | ||
beacondevsync.go | ||
beaconsync.go | ||
downloader_test.go | ||
downloader.go | ||
events.go | ||
fetchers_concurrent_bodies.go | ||
fetchers_concurrent_receipts.go | ||
fetchers_concurrent.go | ||
fetchers.go | ||
metrics.go | ||
peer.go | ||
queue_test.go | ||
queue.go | ||
resultstore.go | ||
skeleton_test.go | ||
skeleton.go | ||
statesync.go | ||
testchain_test.go |