grpc / grpc/grpc-rust

I get `h2 protocol error: http2 error` when the message in tonic::Status is too large

Open
#2,216 3 comments 3 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
12.5k
Forks
1.3k
Avg merge
4d 7h
Merged PRs (30d)
24

Description

## Bug Report

### Version

`v0.12.3`

### Platform

`Linux 6.6.80 #1-NixOS SMP PREEMPT_DYNAMIC Thu Feb 27 12:10:54 UTC 2025 x86_64 GNU/Linux`

### Description

I'm writing tests to test error handling on bad user arguments and to ensure correct errors are returned. I fire requests sequentially, so nothing racy.

For some of my requests, tonic returns `h2 protocol error: http2 error` instead of the error I expect. I traced down my server code until I actually return a `tonic::Status::invalid_argument` from my server implementation method, but somehow it comes back as `h2 protocol error: http2 error`.

Since I'm dumping the full stack trace into the message passed into `tonic::Status::invalid_argument`, I thought maybe there are some limits on body size. Which seems to be the case. I shortened the message and it works fine.

This seems to be quite unintuitive. Why is there a limit on error body? Why is this not documented anywhere, but instead silently results in a weird internal http2 error?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.