feat(system): Instrument service utilization #4501
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The goal: Generically track a utilization metric (and more) for each service spawned in Relay.
To make this possible
relay-system
'sRuntime
andHandle
have gained the possibility to spawn services. Now instead of instantiating aServiceRunner
services are spawned through the runtime.The runtime has now a registry for all spawned services, which allows enumerating all currently running services as well as querying their tracked metrics.
To make testing not abysmal, a
ServiceSpawn
trait was introduced, tests can spawn services on the Tokio Runtime usingTokioServiceSpawn
.This is also a great foundation to finally move the graceful shutdown handling properly into the service framework instead of relying on a global.