Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Expose grpc_health_v1 descriptor set in tonic-health for use with the reflection service #620

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions tonic-health/build.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
use std::env;
use std::path::PathBuf;

fn main() -> Result<(), Box<dyn std::error::Error>> {
let grpc_health_v1_descriptor_set_path: PathBuf =
PathBuf::from(env::var("OUT_DIR").unwrap()).join("grpc_health_v1.bin");
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OUT_DIR might not be set except in the build environment.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pretty sure it is set when build.rs is ran.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OUT_DIR — If the package has a build script, this is set to the folder where the build script should place its output. See below for more information. (Only set during compilation.)

Found here: https://doc.rust-lang.org/cargo/reference/environment-variables.html#:~:text=OUT_DIR%20%E2%80%94%20If%20the%20package%20has,(Only%20set%20during%20compilation.)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But, if you want, I can add a check instead of using .unwrap() here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My only question in that case would be, what behavior would you expect if the OUT_DIR didn't exist?

Would there just be an error saying that the OUT_DIR wasn't set and not produce the descriptor set?

What would say about this @LucioFranco?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can trust that OUT_DIR will be there, because this script is also compiling the proto I think its safe.

tonic_build::configure()
.file_descriptor_set_path(grpc_health_v1_descriptor_set_path)
.build_server(true)
.build_client(true)
.format(false)
Expand Down
3 changes: 3 additions & 0 deletions tonic-health/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ pub mod proto {
#![allow(unreachable_pub)]
#![allow(missing_docs)]
tonic::include_proto!("grpc.health.v1");

pub const GRPC_HEALTH_V1_FILE_DESCRIPTOR_SET: &'static [u8] =
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it make sense to include a test here maybe?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can do that. It will be a few days before I have the time, but I will get that worked in.

tonic::include_file_descriptor_set!("grpc_health_v1");
}

pub mod server;
Expand Down