fix(api): return 400 instead of 500 for DeleteObjects size limit #10097
+6
−6
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Relates to #9993
Change Description
Background
When the DeleteObjects API receives more than 1000 paths, it returns HTTP 500 Internal Server Error. This causes clients to retry the request unnecessarily since 5xx errors are typically retried.
Bug Fix
Problem - DeleteObjects returns HTTP 500 for request size validation errors, causing unnecessary retries.
Root cause - The size limit check was using
http.StatusInternalServerErrorinstead of a 4xx client error:lakeFS/pkg/api/controller.go
Lines 697 to 701 in 2f26953
lakeFS/cmd/lakectl/cmd/retry_client.go
Lines 102 to 106 in 7cc7189
Solution - Return HTTP 400 Bad Request instead, matching AWS S3 behavior. This prevents unnecessary retries since 4xx errors indicate client errors that won't succeed on retry.
Testing Details
Breaking Change?
No - this changes an error response code from 500 to 400, which is a more accurate status code for this validation error.