fix(health): Correctly implement spec for overall health #897
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.
This PR adds a service of empty name (
""
) to each Health Reporter, which will always return aSERVING
status.Motivation
The description of the GRPC Health Checking Protocol includes the following line:
At the moment, this behavior is not implemented in the
tonic-health
crate. In particular, this can cause problems when running health checkers in their default settings.For example, if you try to run Google's GRPC Health Probe script (https://github.com/grpc-ecosystem/grpc-health-probe) like described in the example, it will cause an unexpected error:
The expected behavior would be to return
status: SERVING
.Solution
My PR changes
HealthReporter::new
such that on creation, we register a service""
and associate it withServingStatus::Serving
. Instead ofHashMap::new()
, a HashMap based on this service is used when the HealthReporter is initiated.I also expanded the tests to check for this particular behavior.