listObjects optimized to handle max-keys=1 when prefix is object (#13000)

Some applications albeit poorly written rather than using headObject
rely on listObjects to check for existence of object, this unusual
request always has prefix=(to actual object) and max-keys=1

handle this situation specially such that we can avoid readdir()
on the top level parent to avoid sorting and skipping, ensuring
that such type of listObjects() always behaves similar to a
headObject() call.
This commit is contained in:
Harshavardhana
2021-08-18 18:05:05 -07:00
committed by GitHub
parent 9c65168312
commit ee028a4693
3 changed files with 20 additions and 2 deletions

View File

@@ -331,7 +331,7 @@ func (s *storageRESTServer) WalkDirHandler(w http.ResponseWriter, r *http.Reques
}
var reportNotFound bool
if v := vars[storageRESTReportNotFound]; v != "" {
if v := r.Form.Get(storageRESTReportNotFound); v != "" {
reportNotFound, err = strconv.ParseBool(v)
if err != nil {
s.writeErrorResponse(w, err)