-
Notifications
You must be signed in to change notification settings - Fork 66
Warn on large upsert requests #216
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
base: dev
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
@@ -14,6 +14,9 @@ use crate::qdrant::{ | |||
}; | |||
use crate::qdrant_client::{Qdrant, QdrantResult}; | |||
|
|||
/// Max amount of points that should be upserted in a single request/chunk. | |||
const TOO_MANY_POINTS: usize = 50_000; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This feels a bit arbitrary.
I mean, the request object can basically be infinitely large no matter the number of points.
Do you know if it's possible to render a proper error message instead on the tonic side of things when we surpass limits?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The limit for gRPC we set in Qdrant is usize::MAX
(~2.3 Exabytes) and the error we get on too large requests is not a limit exceeded or similar error.
The one I was facing when uploading 500k points was
gRPC /qdrant.Points/Upsert unexpectedly failed with Internal error "Missing request message."
Which I can't find in tonics documentation.
To not risk throwing wrong errors, I'd prefer not to map this error to some RequestTooLarge
error.
In order to get a limit exceeded error (assuming this exists and gets thrown reliably), we'd need to set a lower limit in the gRPC API, which is arguably a breaking change.
I thought getting some warning is always better than a non descriptive tonic error and a timeout in the client.
If you feel 50k points to be too random, feel free to suggest a better limit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you know if it's possible to render a proper error message instead on the tonic side of things when we surpass limits?
gRPC /qdrant.Points/Upsert unexpectedly failed with Internal error "Missing request message."
Could it be improved with hyperium/tonic#1682?
It's landed in tonic 0.12, but Qdrant still uses 0.11.
Throw a warning if someone tries to upsert too many points in a single request.
Tonic server doesn't throw a meaningful error if the max message size gets exceeded and a huge upsertion request may result in a timeout without further information.