How We Found Apache Tomcat Couldn’t Handle Large Requests
The bug report
A few weeks ago, a team reported a problem. Their Zuul Proxy stopped forwarding request bodies to backend systems. On their Windows machines, the developer team could not reproduce the problem. Neither could we.
We verified that the frontend application was actually sending the payload. After being sure about that, we enabled wire logging in our proxy service. We found that the service in question received the payload, but did indeed not forward it to the downstream service.
upstream/downstream
Upstream and downstream describe the flow of a message: all
messages flow from upstream to downstream.
tools.ietf.org
Why shouldn’t the proxy forward the request body out of a sudden?
The first question we asked ourselves was: How do messages flow through our proxy services? Our Zuul proxies use an embedded Apache Tomcat as an application server. Zuul itself registers a Servlet that will forward the request through the many Filters and finally…