Varnish swallowing 4xx responses from POSTs
twbecker at gmail.com
Wed Sep 26 00:41:55 UTC 2018
We have an application that we front with Varnish 4.0.5. Recently, after an application upgrade in which we migrated from Jetty 9.2 to 9.4, we began noticing a lot of 503s being returned from Varnish on POST requests. We have an endpoint that takes a payload of a potentially large amount of JSON, and validates it as it’s being read. What we have discovered is that if there is a problem with the content, we correctly return a 400 Bad Request from Jetty. Notably, this can happen before the entire content is received. When this happens, Varnish continues to send the remainder of data, despite having already seen the response. Now after our upgrade, Jetty's behavior is to send a TCP RST when this happens (since the data is unwanted by the application). Unfortunately, Varnish interprets the RST as a backend error, and goes to vcl_backend_error, having never sent the original response returned from Jetty to the client. So instead of seeing a 400 Bad Request with a helpful message, they simply get 503 Service Unavailable.
I found this issue which seems similar: https://github.com/varnishcache/varnish-cache/issues/2332 <https://github.com/varnishcache/varnish-cache/issues/2332> Can someone help here? Is there anyway to work around this behavior?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the varnish-misc