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?

_______________________________________________
varnish-misc mailing list
[email protected]
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc

Reply via email to