The problem:
I am getting this error while receiving message in grpc:
rpc error: code = ResourceExhausted desc = grpc: received message larger than max (8653851 vs. 4194304)
What I tried:
I gave the option to increase the size of the message to be received but it still gave the same error which means this setting of maximum size didn't work:
size := 1024 * 1024 * 12
opts = append(opts, grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(size)))
conn, err := grpc.Dial(address, opts...)
Comments:
The default limit is 1024 * 1024 * 4 = 4194304
which is shown in the error message. I was expecting this limit to increase to 1024 * 1024 * 12 = 12582912
but clearly it didn't.
Please try updating grpc.MaxCallSendMsgSize(s int) on your client to enable your client send larger message. This worked for me.
Call options can be passed with each request.
For example, if your package is called queue
and your method is called GetItems
, then you would pass in the MaxCallRecvMsgSize
option when calling GetItems
.
Protobuf:
package queue;
service Queue {
rpc GetItems (Request) returns (Items) {
}
}
Go:
conn, err := grpc.Dial(address, opts...)
c := queue.NewQueueClient(s.Conn)
maxSizeOption := grpc.MaxCallRecvMsgSize(32*10e6)
items, err := c.GetItems(ctx, &queue.Request{}, maxSizeOption)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With