mirror of
https://github.com/XRPLF/rippled.git
synced 2026-09-27 15:28:03 +00:00
MetricsRegistry did two jobs. It owned the OTel metrics pipeline, and it registered the observable gauges whose callbacks read live application services. The second job is what made the whole class xrpld-tier, so the pipeline's lifecycle -- the recording() gate and the stop() teardown that closes a use-after-free window -- could not be unit-tested in xrpl_tests. Split it in two: - xrpl::telemetry::MetricsRegistry (libxrpl) owns the exporter, provider, meter, the 16 synchronous instruments, recording(), stop(), and the record*/increment* methods. - xrpl::telemetry::AppMetricGauges (xrpld) owns the 19 observable gauges and their callbacks, holding a reference to the core and to the ServiceRegistry. MetricMacros.h and ValidationTracker move with the core. The macros need only recording() and meter(), both core members; the core holds a tracker by value, and a libxrpl header cannot include one from src/. ApplicationImp owns both objects and sequences them. The core is built in the member-init list, so every synchronous instrument exists before any subsystem can record one. The gauges are armed once overlay_ exists, the last service their callbacks read. Shutdown detaches the gauge callbacks before the core drops the provider, and each shutdown step is isolated so a failure in one cannot skip the others. That detach call is new. detachCallbacks() had no callers, and the flag it sets is read by the gauge callbacks but can no longer be written by the core, so the caller now has to make the ordering explicit. The telemetry module links xrpl.libxrpl.core and xrpl.libxrpl.protocol PUBLIC: ValidationTracker.h takes a LedgerIndex and MetricMacros.h takes a ServiceRegistry, both in interfaces a consumer compiles against. Adds a MetricsRegistry gtest that drives an enabled core with telemetry on and pins the recording() gate, stop() leaving the registry inert, and stop() being idempotent. The libxrpl test tree no longer depends on xrpld.telemetry at all, and the two CMake workarounds that compiled xrpld sources into xrpl_tests are gone. Documentation and dashboard source links follow the code to their new paths, split between the two classes by which one now defines each metric.
345 lines
9.0 KiB
Plaintext
345 lines
9.0 KiB
Plaintext
benchmarks.libxrpl > xrpl.basics
|
|
benchmarks.libxrpl > xrpl.config
|
|
benchmarks.libxrpl > xrpl.nodestore
|
|
libxrpl.basics > xrpl.basics
|
|
libxrpl.conditions > xrpl.basics
|
|
libxrpl.conditions > xrpl.conditions
|
|
libxrpl.config > xrpl.basics
|
|
libxrpl.config > xrpl.config
|
|
libxrpl.consensus > xrpl.basics
|
|
libxrpl.consensus > xrpl.consensus
|
|
libxrpl.core > xrpl.basics
|
|
libxrpl.core > xrpl.core
|
|
libxrpl.core > xrpl.json
|
|
libxrpl.crypto > xrpl.basics
|
|
libxrpl.json > xrpl.basics
|
|
libxrpl.json > xrpl.json
|
|
libxrpl.ledger > xrpl.basics
|
|
libxrpl.ledger > xrpl.json
|
|
libxrpl.ledger > xrpl.ledger
|
|
libxrpl.ledger > xrpl.nodestore
|
|
libxrpl.ledger > xrpl.protocol
|
|
libxrpl.ledger > xrpl.shamap
|
|
libxrpl.net > xrpl.basics
|
|
libxrpl.net > xrpl.net
|
|
libxrpl.nodestore > xrpl.basics
|
|
libxrpl.nodestore > xrpl.config
|
|
libxrpl.nodestore > xrpl.json
|
|
libxrpl.nodestore > xrpl.nodestore
|
|
libxrpl.nodestore > xrpl.protocol
|
|
libxrpl.peerfinder > xrpl.basics
|
|
libxrpl.peerfinder > xrpl.peerfinder
|
|
libxrpl.peerfinder > xrpl.protocol
|
|
libxrpl.protocol > xrpl.basics
|
|
libxrpl.protocol > xrpl.json
|
|
libxrpl.protocol > xrpl.protocol
|
|
libxrpl.rdb > xrpl.basics
|
|
libxrpl.rdb > xrpl.config
|
|
libxrpl.rdb > xrpl.core
|
|
libxrpl.rdb > xrpl.rdb
|
|
libxrpl.resource > xrpl.basics
|
|
libxrpl.resource > xrpl.json
|
|
libxrpl.resource > xrpl.protocol
|
|
libxrpl.resource > xrpl.resource
|
|
libxrpl.server > xrpl.basics
|
|
libxrpl.server > xrpl.config
|
|
libxrpl.server > xrpl.core
|
|
libxrpl.server > xrpl.json
|
|
libxrpl.server > xrpl.protocol
|
|
libxrpl.server > xrpl.rdb
|
|
libxrpl.server > xrpl.resource
|
|
libxrpl.server > xrpl.server
|
|
libxrpl.shamap > xrpl.basics
|
|
libxrpl.shamap > xrpl.nodestore
|
|
libxrpl.shamap > xrpl.protocol
|
|
libxrpl.shamap > xrpl.shamap
|
|
libxrpl.telemetry > xrpl.basics
|
|
libxrpl.telemetry > xrpl.config
|
|
libxrpl.telemetry > xrpl.protocol
|
|
libxrpl.telemetry > xrpl.telemetry
|
|
libxrpl.tx > xrpl.basics
|
|
libxrpl.tx > xrpl.conditions
|
|
libxrpl.tx > xrpl.core
|
|
libxrpl.tx > xrpl.json
|
|
libxrpl.tx > xrpl.ledger
|
|
libxrpl.tx > xrpl.protocol
|
|
libxrpl.tx > xrpl.server
|
|
libxrpl.tx > xrpl.telemetry
|
|
libxrpl.tx > xrpl.tx
|
|
test.app > test.jtx
|
|
test.app > test.unit_test
|
|
test.app > xrpl.basics
|
|
test.app > xrpl.config
|
|
test.app > xrpl.consensus
|
|
test.app > xrpl.core
|
|
test.app > xrpld.app
|
|
test.app > xrpld.core
|
|
test.app > xrpld.overlay
|
|
test.app > xrpld.rpc
|
|
test.app > xrpl.json
|
|
test.app > xrpl.ledger
|
|
test.app > xrpl.nodestore
|
|
test.app > xrpl.protocol
|
|
test.app > xrpl.resource
|
|
test.app > xrpl.server
|
|
test.app > xrpl.shamap
|
|
test.app > xrpl.tx
|
|
test.basics > test.jtx
|
|
test.basics > xrpl.basics
|
|
test.basics > xrpl.core
|
|
test.basics > xrpld.rpc
|
|
test.basics > xrpl.json
|
|
test.basics > xrpl.protocol
|
|
test.beast > xrpl.basics
|
|
test.conditions > xrpl.basics
|
|
test.conditions > xrpl.conditions
|
|
test.consensus > test.jtx
|
|
test.consensus > xrpl.basics
|
|
test.consensus > xrpld.app
|
|
test.consensus > xrpl.ledger
|
|
test.consensus > xrpl.protocol
|
|
test.consensus > xrpl.shamap
|
|
test.consensus > xrpl.tx
|
|
test.core > test.jtx
|
|
test.core > test.unit_test
|
|
test.core > xrpl.basics
|
|
test.core > xrpl.config
|
|
test.core > xrpl.core
|
|
test.core > xrpld.core
|
|
test.core > xrpl.json
|
|
test.core > xrpl.protocol
|
|
test.core > xrpl.rdb
|
|
test.core > xrpl.server
|
|
test.json > test.jtx
|
|
test.json > xrpl.json
|
|
test.jtx > test.unit_test
|
|
test.jtx > xrpl.basics
|
|
test.jtx > xrpl.config
|
|
test.jtx > xrpl.core
|
|
test.jtx > xrpld.app
|
|
test.jtx > xrpld.core
|
|
test.jtx > xrpld.rpc
|
|
test.jtx > xrpl.json
|
|
test.jtx > xrpl.ledger
|
|
test.jtx > xrpl.net
|
|
test.jtx > xrpl.protocol
|
|
test.jtx > xrpl.resource
|
|
test.jtx > xrpl.server
|
|
test.jtx > xrpl.tx
|
|
test.ledger > test.jtx
|
|
test.ledger > xrpl.basics
|
|
test.ledger > xrpl.core
|
|
test.ledger > xrpld.app
|
|
test.ledger > xrpld.core
|
|
test.ledger > xrpl.json
|
|
test.ledger > xrpl.ledger
|
|
test.ledger > xrpl.protocol
|
|
test.nodestore > test.jtx
|
|
test.nodestore > test.unit_test
|
|
test.nodestore > xrpl.basics
|
|
test.nodestore > xrpl.config
|
|
test.nodestore > xrpld.app
|
|
test.nodestore > xrpld.core
|
|
test.nodestore > xrpld.telemetry
|
|
test.nodestore > xrpl.nodestore
|
|
test.nodestore > xrpl.rdb
|
|
test.overlay > test.jtx
|
|
test.overlay > test.unit_test
|
|
test.overlay > xrpl.basics
|
|
test.overlay > xrpl.config
|
|
test.overlay > xrpld.app
|
|
test.overlay > xrpld.core
|
|
test.overlay > xrpld.overlay
|
|
test.overlay > xrpl.json
|
|
test.overlay > xrpl.nodestore
|
|
test.overlay > xrpl.peerfinder
|
|
test.overlay > xrpl.protocol
|
|
test.overlay > xrpl.resource
|
|
test.overlay > xrpl.server
|
|
test.overlay > xrpl.shamap
|
|
test.protocol > test.jtx
|
|
test.protocol > test.unit_test
|
|
test.protocol > xrpl.basics
|
|
test.protocol > xrpld.core
|
|
test.protocol > xrpl.json
|
|
test.protocol > xrpl.protocol
|
|
test.rpc > test.jtx
|
|
test.rpc > xrpl.basics
|
|
test.rpc > xrpl.config
|
|
test.rpc > xrpl.core
|
|
test.rpc > xrpld.app
|
|
test.rpc > xrpld.core
|
|
test.rpc > xrpld.overlay
|
|
test.rpc > xrpld.rpc
|
|
test.rpc > xrpl.json
|
|
test.rpc > xrpl.ledger
|
|
test.rpc > xrpl.protocol
|
|
test.rpc > xrpl.resource
|
|
test.rpc > xrpl.server
|
|
test.rpc > xrpl.tx
|
|
test.server > test.jtx
|
|
test.server > test.unit_test
|
|
test.server > xrpl.basics
|
|
test.server > xrpl.config
|
|
test.server > xrpld.app
|
|
test.server > xrpld.core
|
|
test.server > xrpl.json
|
|
test.server > xrpl.protocol
|
|
test.server > xrpl.server
|
|
test.unit_test > xrpl.basics
|
|
test.unit_test > xrpl.protocol
|
|
tests.libxrpl > xrpl.basics
|
|
tests.libxrpl > xrpl.config
|
|
tests.libxrpl > xrpl.consensus
|
|
tests.libxrpl > xrpl.core
|
|
tests.libxrpl > xrpld.app
|
|
tests.libxrpl > xrpld.rpc
|
|
tests.libxrpl > xrpl.json
|
|
tests.libxrpl > xrpl.ledger
|
|
tests.libxrpl > xrpl.net
|
|
tests.libxrpl > xrpl.nodestore
|
|
tests.libxrpl > xrpl.peerfinder
|
|
tests.libxrpl > xrpl.protocol
|
|
tests.libxrpl > xrpl.protocol_autogen
|
|
tests.libxrpl > xrpl.rdb
|
|
tests.libxrpl > xrpl.resource
|
|
tests.libxrpl > xrpl.server
|
|
tests.libxrpl > xrpl.shamap
|
|
tests.libxrpl > xrpl.telemetry
|
|
tests.libxrpl > xrpl.tx
|
|
xrpl.conditions > xrpl.basics
|
|
xrpl.conditions > xrpl.protocol
|
|
xrpl.config > xrpl.basics
|
|
xrpl.consensus > xrpl.basics
|
|
xrpl.consensus > xrpl.json
|
|
xrpl.consensus > xrpl.ledger
|
|
xrpl.consensus > xrpl.protocol
|
|
xrpl.consensus > xrpl.telemetry
|
|
xrpl.core > xrpl.basics
|
|
xrpl.core > xrpl.json
|
|
xrpl.core > xrpl.protocol
|
|
xrpl.json > xrpl.basics
|
|
xrpl.ledger > xrpl.basics
|
|
xrpl.ledger > xrpl.json
|
|
xrpl.ledger > xrpl.nodestore
|
|
xrpl.ledger > xrpl.protocol
|
|
xrpl.ledger > xrpl.shamap
|
|
xrpl.net > xrpl.basics
|
|
xrpl.nodestore > xrpl.basics
|
|
xrpl.nodestore > xrpl.config
|
|
xrpl.nodestore > xrpl.json
|
|
xrpl.nodestore > xrpl.protocol
|
|
xrpl.peerfinder > xrpl.basics
|
|
xrpl.peerfinder > xrpl.protocol
|
|
xrpl.protocol > xrpl.basics
|
|
xrpl.protocol > xrpl.json
|
|
xrpl.protocol_autogen > xrpl.json
|
|
xrpl.protocol_autogen > xrpl.protocol
|
|
xrpl.rdb > xrpl.basics
|
|
xrpl.rdb > xrpl.core
|
|
xrpl.rdb > xrpl.protocol
|
|
xrpl.resource > xrpl.basics
|
|
xrpl.resource > xrpl.json
|
|
xrpl.resource > xrpl.protocol
|
|
xrpl.server > xrpl.basics
|
|
xrpl.server > xrpl.core
|
|
xrpl.server > xrpl.json
|
|
xrpl.server > xrpl.protocol
|
|
xrpl.server > xrpl.rdb
|
|
xrpl.server > xrpl.resource
|
|
xrpl.shamap > xrpl.basics
|
|
xrpl.shamap > xrpl.nodestore
|
|
xrpl.shamap > xrpl.protocol
|
|
xrpl.telemetry > xrpl.basics
|
|
xrpl.telemetry > xrpl.config
|
|
xrpl.telemetry > xrpl.core
|
|
xrpl.telemetry > xrpl.protocol
|
|
xrpl.tx > xrpl.basics
|
|
xrpl.tx > xrpl.core
|
|
xrpl.tx > xrpl.ledger
|
|
xrpl.tx > xrpl.protocol
|
|
xrpl.tx > xrpl.telemetry
|
|
xrpld.app > test.unit_test
|
|
xrpld.app > xrpl.basics
|
|
xrpld.app > xrpl.config
|
|
xrpld.app > xrpl.consensus
|
|
xrpld.app > xrpl.core
|
|
xrpld.app > xrpld.core
|
|
xrpld.app > xrpl.json
|
|
xrpld.app > xrpl.ledger
|
|
xrpld.app > xrpl.net
|
|
xrpld.app > xrpl.nodestore
|
|
xrpld.app > xrpl.peerfinder
|
|
xrpld.app > xrpl.protocol
|
|
xrpld.app > xrpl.rdb
|
|
xrpld.app > xrpl.resource
|
|
xrpld.app > xrpl.server
|
|
xrpld.app > xrpl.shamap
|
|
xrpld.app > xrpl.telemetry
|
|
xrpld.app > xrpl.tx
|
|
xrpld.core > xrpl.basics
|
|
xrpld.core > xrpl.config
|
|
xrpld.core > xrpl.core
|
|
xrpld.core > xrpl.net
|
|
xrpld.core > xrpl.protocol
|
|
xrpld.core > xrpl.rdb
|
|
xrpld.overlay > xrpl.basics
|
|
xrpld.overlay > xrpl.config
|
|
xrpld.overlay > xrpl.consensus
|
|
xrpld.overlay > xrpl.core
|
|
xrpld.overlay > xrpld.core
|
|
xrpld.overlay > xrpld.peerfinder
|
|
xrpld.overlay > xrpl.json
|
|
xrpld.overlay > xrpl.ledger
|
|
xrpld.overlay > xrpl.peerfinder
|
|
xrpld.overlay > xrpl.protocol
|
|
xrpld.overlay > xrpl.resource
|
|
xrpld.overlay > xrpl.server
|
|
xrpld.overlay > xrpl.shamap
|
|
xrpld.overlay > xrpl.telemetry
|
|
xrpld.overlay > xrpl.tx
|
|
xrpld.peerfinder > xrpl.basics
|
|
xrpld.peerfinder > xrpld.app
|
|
xrpld.peerfinder > xrpld.core
|
|
xrpld.peerfinder > xrpl.peerfinder
|
|
xrpld.peerfinder > xrpl.rdb
|
|
xrpld.perflog > xrpl.basics
|
|
xrpld.perflog > xrpl.config
|
|
xrpld.perflog > xrpl.core
|
|
xrpld.perflog > xrpld.app
|
|
xrpld.perflog > xrpld.rpc
|
|
xrpld.perflog > xrpl.json
|
|
xrpld.perflog > xrpl.nodestore
|
|
xrpld.perflog > xrpl.protocol
|
|
xrpld.perflog > xrpl.telemetry
|
|
xrpld.rpc > xrpl.basics
|
|
xrpld.rpc > xrpl.config
|
|
xrpld.rpc > xrpl.core
|
|
xrpld.rpc > xrpld.core
|
|
xrpld.rpc > xrpl.json
|
|
xrpld.rpc > xrpl.ledger
|
|
xrpld.rpc > xrpl.net
|
|
xrpld.rpc > xrpl.nodestore
|
|
xrpld.rpc > xrpl.protocol
|
|
xrpld.rpc > xrpl.rdb
|
|
xrpld.rpc > xrpl.resource
|
|
xrpld.rpc > xrpl.server
|
|
xrpld.rpc > xrpl.shamap
|
|
xrpld.rpc > xrpl.telemetry
|
|
xrpld.rpc > xrpl.tx
|
|
xrpld.shamap > xrpl.basics
|
|
xrpld.shamap > xrpld.core
|
|
xrpld.shamap > xrpl.nodestore
|
|
xrpld.shamap > xrpl.protocol
|
|
xrpld.shamap > xrpl.shamap
|
|
xrpld.telemetry > xrpl.basics
|
|
xrpld.telemetry > xrpl.consensus
|
|
xrpld.telemetry > xrpl.core
|
|
xrpld.telemetry > xrpld.core
|
|
xrpld.telemetry > xrpl.json
|
|
xrpld.telemetry > xrpl.nodestore
|
|
xrpld.telemetry > xrpl.protocol
|
|
xrpld.telemetry > xrpl.rdb
|
|
xrpld.telemetry > xrpl.server
|
|
xrpld.telemetry > xrpl.telemetry
|