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

grpc v1.15 will break health check protocol #43

Closed
ahmetb opened this issue Sep 19, 2018 · 9 comments
Closed

grpc v1.15 will break health check protocol #43

ahmetb opened this issue Sep 19, 2018 · 9 comments

Comments

@ahmetb
Copy link
Contributor

ahmetb commented Sep 19, 2018

grpc 1.15 has added a new rpc to health.proto:

  rpc Watch(HealthCheckRequest) returns (stream HealthCheckResponse);	

Since we implement the service Health directly and its rpc Check, addition of this method will break at least some parts of microservices-demo.

For Go, this 100% breaks all services with [email protected]. So I went ahead and pinned all grpc-go dependencies to =v1.14.0 constraint in Gopkg.toml.

For dynamic languages like Node, Python: I would not be surprised if next time we update requirements.txt/package.json, health servers will stop starting because rpc Watch isn't implemented.

@askmeegs
Copy link
Contributor

I believe this was fixed (for grpc-go) grpc/grpc-go#2318

And the go services are now running grpc 1.17 https://github.com/GoogleCloudPlatform/microservices-demo/blob/master/src/productcatalogservice/Gopkg.toml#L58

@dfawley
Copy link

dfawley commented Sep 17, 2019

Note that you must embed the Unimplemented<service_name>Server in your service implementation to avoid being broken by newly-added methods.

@ahmetb
Copy link
Contributor Author

ahmetb commented Sep 17, 2019

Let’s keep reopen. @dfawley is this only for Go and other compiled languages -or does it include dynamic languages as well?

@ahmetb ahmetb reopened this Sep 17, 2019
@dfawley
Copy link

dfawley commented Sep 17, 2019

AFAIK only Go had this problem - in general, adding RPCs to a service should be considered a backward compatible change.

@ahmetb
Copy link
Contributor Author

ahmetb commented Sep 17, 2019

BTW I think we already return codes.Unimplemented for rpc Watch(). Go is probably covered from that side –until another breaking change is to be added.

@ahmetb
Copy link
Contributor Author

ahmetb commented Sep 17, 2019

@dfawley I'm looking for type UnimplementedHealthServer here https://godoc.org/google.golang.org/grpc/health/grpc_health_v1 but doesn't seem to be added there. (I see it in some other OSS projects.)

@dfawley
Copy link

dfawley commented Sep 17, 2019

Sorry for the confusion - grpc/grpc-go#3025 will add it. We needed to upgrade the protoc-gen-go version to pick up the new feature.

@daniel-sanche
Copy link
Member

@ahmetb Is this issue still relevant?

@ahmetb
Copy link
Contributor Author

ahmetb commented Apr 14, 2020

I think we can close. grpc-go addressed this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants