-
Notifications
You must be signed in to change notification settings - Fork 4
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
Deal with broken deployments #22
Comments
I get the following back:
It would be great if the response and request were included to be able to understand what's happening. |
This issue is not about connectivity issues, but about non-compliant gRPC implementations that use HTTP error codes instead of gRPC error codes to indicate problems (gRPC problems are meant to be indicated with a HTTP error of 200 and then a non-zero grpc-status). The 404/not found in your message suggests it's not able to connect to the remote server at all? Not sure what kind of request/response you're hoping to see; in particular, request, response in gRPC terms (the messages sent to and from the server) have not yet happened at the connecting stage. |
In the process, this makes a few other improvements: * The client can now insist on an initial compression algorithm, before compression negotation has taken place (`connInitCompression`) * The server can insist on a particular compression algorithm, independent of what the client offers (`insist`) * When the server returns a HTTP status other than 200, we include the response body in the exception (this might help with #22, specifically #22 (comment))
In response to @domenkozar 's comment above: as I mentioned previously, |
All aspects of this ticket I think are now working and tested. Also verified that the few changes we made did not break the interop tests. Closing! |
The spec says: Implementations should expect broken deployments to
content-type
#205)Implementations must synthesize a Status & Status-Message to propagate to the application layer when this occurs.
Note that the spec specifically states this about dealing with responses (i.e., client-side). Indeed, for dealing with requests (server-side) the spec has different requirements; for example, a missing
content-type
header should result in a HTTP 415 status.Additionally:
At worst, the implementation can abort decoding the status message altogether such that the user would received the raw percent-encoded form. Alternatively, the implementation can decode valid portions while leaving broken %-encodings as-is or replacing them with a replacement character (e.g., '?' or the Unicode replacement character).
We don't do this yet.
The text was updated successfully, but these errors were encountered: