Hello everyone! I couldn't find a solution on google so I'm posting here:

We have a project which uses grpc-web for handling requests to a Java 
server from a browser client (this decision was driven by usage of Protobuf 
for api code generation). Therefore, requests and responses are wrapped 
into HTTP/2. Whenever server throws an exception, I wrap it into a Status (
https://github.com/googleapis/googleapis/.../status.proto 
<https://github.com/googleapis/googleapis/blob/master/google/rpc/status.proto>),
 
where details is an exception wrapped into Any. This is usually a complex 
exception with multiple links to different entities and so on.

An error in the response is sent not in the body, but in the 
"grpc-status-details-bin" 
header, which is why, if the error is a long binary string (>4Kb), total 
header size gets too large, and I assume that grpc-web cuts the message 
down, as It says at https://github.com/grpc/grpc/.../PROTOCOL-HTTP2.md 
<https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md>:

> Servers may limit the size of *Request-Headers*, with a default of 8 KiB 
suggested. Implementations are encouraged to compute total header size like 
HTTP/2's SETTINGS_MAX_HEADER_LIST_SIZE: the sum of all header fields, for 
each field the sum of the uncompressed field name and value lengths plus 
32, with binary values' lengths being post-Base64.

So, the question is: is there any known workaround for responding with big 
error messages? I've thought about streaming chunked errors, but the OK 
response is not streamed in most cases

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to grpc-io+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/2e6ff0fe-4e13-413e-b5fa-3e738f6ab940n%40googlegroups.com.

Reply via email to