mirror of
https://github.com/minio/minio.git
synced 2025-01-11 23:13:23 -05:00
xl: CreateFile shouldn't prematurely timeout (#11878)
For large objects taking more than '3 minutes' response times in a single PUT operation can timeout prematurely as 'ResponseHeader' timeout hits for 3 minutes. Avoid this by keeping the connection active during CreateFile phase.
This commit is contained in:
parent
21cfc4aa49
commit
79564656eb
@ -337,7 +337,12 @@ func (client *storageRESTClient) CreateFile(ctx context.Context, volume, path st
|
||||
values.Set(storageRESTFilePath, path)
|
||||
values.Set(storageRESTLength, strconv.Itoa(int(size)))
|
||||
respBody, err := client.call(ctx, storageRESTMethodCreateFile, values, ioutil.NopCloser(reader), size)
|
||||
defer http.DrainBody(respBody)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
waitReader, err := waitForHTTPResponse(respBody)
|
||||
defer http.DrainBody(ioutil.NopCloser(waitReader))
|
||||
defer respBody.Close()
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -287,10 +287,9 @@ func (s *storageRESTServer) CreateFileHandler(w http.ResponseWriter, r *http.Req
|
||||
s.writeErrorResponse(w, err)
|
||||
return
|
||||
}
|
||||
err = s.storage.CreateFile(r.Context(), volume, filePath, int64(fileSize), r.Body)
|
||||
if err != nil {
|
||||
s.writeErrorResponse(w, err)
|
||||
}
|
||||
|
||||
done := keepHTTPResponseAlive(w)
|
||||
done(s.storage.CreateFile(r.Context(), volume, filePath, int64(fileSize), r.Body))
|
||||
}
|
||||
|
||||
// DeleteVersion delete updated metadata.
|
||||
|
Loading…
Reference in New Issue
Block a user