Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
1.8.2
-
None
-
None
Description
Context:
Currently in grpc-avro library, avro RPC exceptions are transported to from server to client as part of a response (using a boolean field at the head of response payload to indicate whether its actual response or error) similar to avro-ipc's response serialization logic.
Problem:
By encapsulating server exception as a regular response, its not visible for gRPC to know when an error response is being sent. And any error metrics computed gRPC on their stream listeners won't capture these errors.
Proposed Solution:
Send server error as io.grpc.StatusRuntimeException (which is perferred way of error), with appropriate Status code(probably Internal), and include the actual avro serialized error as Metadata attached to it.
Impact:
This would change RPC response wire format and won't be backward compatible.