You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
servlet: tomcat does not support trailer only #10124
This is a known behaviour where tomcat sends an empty data frame with a end_stream flag instead of a trailer only frame with end_stream flag. While it is a valid http2 behaviour, this is not supported by gRPC who expected end_stream frames to be sent in trailer or trailer-only frame.
What did you see instead?
Internal status error because a data frame is end_stream
Steps to reproduce the bug
The transport tests earlyServerClose_noServerHeaders, earlyServerClose_serverFailure and earlyServerClose_serverFailure_withClientCancelOnListenerClosed reproduce the problem
This is going to end up being closed as won't fix. In #12510 I talk about the problems with fixing Tomcat. I do agree Tomcat's behavior is valid, but it seems the only solution that would actually work is to change the clients, and there's simply not enough bandwidth to entertain that idea for the likes of Tomcat. If clients are fixed, then Tomcat's current behavior starts working, so there's really nothing to do on Tomcat in either case.
If you really want to use Tomcat, and for some reason broken deadline handling doesn't bother you, you can use an interceptor like ForceTrailersServerInterceptor in #10125 and place it close to the application.
Some docs will need to be added/updated to warn users, so I'm leaving this open until there's some hope a user would learn that Tomcat is unsupported before they rely on it.
Activity
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
1 remaining item
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
servlet: force always sending end_stream in trailer frame (Fixes grpc…
mvazquezrius commentedon Mar 31, 2025
Are there plans on when this will be fixed?
ejona86 commentedon Nov 12, 2025
This is going to end up being closed as won't fix. In #12510 I talk about the problems with fixing Tomcat. I do agree Tomcat's behavior is valid, but it seems the only solution that would actually work is to change the clients, and there's simply not enough bandwidth to entertain that idea for the likes of Tomcat. If clients are fixed, then Tomcat's current behavior starts working, so there's really nothing to do on Tomcat in either case.
If you really want to use Tomcat, and for some reason broken deadline handling doesn't bother you, you can use an interceptor like ForceTrailersServerInterceptor in #10125 and place it close to the application.
Some docs will need to be added/updated to warn users, so I'm leaving this open until there's some hope a user would learn that Tomcat is unsupported before they rely on it.