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
Hidden error occurred and failed to set a temporary request header, resulting in another part of the VCL not to trigger based on the conditional but still deliver a 200 to the client. See example below. I understand that temporary variables should most likely be moved to a VMOD and will do that but the error was completely being ignored when the content should have been considered invalid, in my case.
Something to note from the reproducing VTC, requests will go past deliver before intercepting the workspace overflow. I thought this was interesting and wondering if that should be the intended goal if the request is to fail anyway.
late bugwash note: We see that this is a problem, and it is not intended. We want to fail the vcl for any out-of-headers / out-of-workspace condition. 👀
Looking on IRC there may have been questions or uncertainties with some points in the ticket so ill try to expand some.
The VTC was run on open source branches: master, 7.5, 6.0.
The main concern was the backend workspace overflow that is not caught.
The client side going through the whole pipeline before noticing there was a workspace overflow was just something I noticed while working out the VTC. Technically it ends up with the right result but thought i'd point it out if it was wasting cycles or something unintended.
Client 1 will trigger a workspace overflow in vcl_recv that isn't intercept until after vcl_deliver is already run. This results in the 500 but later than I expected.
Client 2 will trigger a workspace overflow in backend_fetch that is ignored.
The main way this happens is through the lost header case(s). I didn't notice any other place where workspace overflow doesn't trigger a failure immediately. In almost all cases of lost header, which marks workspace overflowed, logic continues.
A tangent the error for when http->nhd >= http->shd wasn't clear the max headers amount of headers were hit.
Expected Behavior
If a workspace overflow occurs due to a lost header, the request should fail.
Current Behavior
If a workspace overflow occurs due to a lost header, deliver the response from server.
Possible Solution
No response
Steps to Reproduce (for bugs)
The expectation would be that the second request would also return a 500 (or 503).
Context
Hidden error occurred and failed to set a temporary request header, resulting in another part of the VCL not to trigger based on the conditional but still deliver a 200 to the client. See example below. I understand that temporary variables should most likely be moved to a VMOD and will do that but the error was completely being ignored when the content should have been considered invalid, in my case.
Something to note from the reproducing VTC, requests will go past deliver before intercepting the workspace overflow. I thought this was interesting and wondering if that should be the intended goal if the request is to fail anyway.
Varnish Cache version
varnish 6+
Operating system
Ubuntu 22.04
Source of binary packages used (if any)
No response
The text was updated successfully, but these errors were encountered: