19

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.

Jonathan Hall
  • 75,165
  • 16
  • 143
  • 189
Satyajit Das
  • 2,740
  • 5
  • 16
  • 30

2 Answers2

8

Please try updating grpc.MaxCallSendMsgSize(s int) on your client to enable your client send larger message. This worked for me.

2

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)
jchavannes
  • 2,440
  • 1
  • 26
  • 15