-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ext_authz gRPC with a request body may be called multiple times for the same request #13260
Comments
@brectanus-sigsci thanks for reporting. Will take a look. |
@brectanus-sigsci I have a PR here: #13288. And if you have time, could help to test it out? This is a ubuntu-based image containing that fix |
@dio I had a chance to look into this and test with [EDIT: Removed part of the example log below so that it showed only the same request as stated in the text.] While this seems to fix the issue where I was seeing multiple calls, it also seems to cause another more serious issue where the request hangs (both downstream and upstream). It appears that once the body limit is reached it stops sending data to the upstream and does not finish the downstream request while the upstream waits endlessly for the request to finish sending the body. Normally canceling the downstream request clears this up, but if the downstream request is really big, then canceling the downstream does not seem to cancel the upstream and it hangs for some time (longer than I was willing to wait for it).
Here is an example request with curl with about 7MB body that hangs, then I wait a few seconds, then cancel the request (ctrl-C in curl). After canceling the upstream sees
Here is the envoy debug log during the above request:
|
@dio Sorry. I had paste in too much of the logs from a previous run above, so edited that comment to only show the |
@brectanus-sigsci Thanks. Sorry for this 🤦🏽♂️, but I have an updated image here: |
Thanks @dio! This indeed seems to resolve the issue. |
@brectanus-sigsci thank you! I attacked it wrongly, glad that it works now. cc. @junr03. |
This patch makes sure the filter sends exactly only one check request when the buffer is full, while there might be more data to be decoded. Risk Level: Low Testing: Unit test Docs Changes: N/A Release Notes: N/A Fixes #13260 Signed-off-by: Dhi Aurrahman <dio@tetrate.io>
Description:
Repro steps:
Config:
Logs:
cc @gsagula @dio
The text was updated successfully, but these errors were encountered: