1
0
mirror of https://github.com/minio/minio synced 2024-07-08 19:56:05 +00:00

fix: keep writing previous speedtest result (#15484)

when object speedtest is running keep writing
previous speedtest result back to client until
we have a new result - this avoids sending back
blank entries in between the speedtest when it
is running in 'autotune' mode.
This commit is contained in:
Harshavardhana 2022-08-07 23:04:03 -07:00 committed by GitHub
parent 102295f58a
commit 5e4213b3be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1272,14 +1272,24 @@ func (a adminAPIHandlers) ObjectSpeedTestHandler(w http.ResponseWriter, r *http.
storageClass: storageClass, storageClass: storageClass,
bucketName: customBucket, bucketName: customBucket,
}) })
var prevResult madmin.SpeedTestResult
for { for {
select { select {
case <-ctx.Done(): case <-ctx.Done():
return return
case <-keepAliveTicker.C: case <-keepAliveTicker.C:
// Write a blank entry to prevent client from disconnecting // if previous result is set keep writing the
if err := enc.Encode(madmin.SpeedTestResult{}); err != nil { // previous result back to the client
return if prevResult.Version != "" {
if err := enc.Encode(prevResult); err != nil {
return
}
} else {
// first result is not yet obtained, keep writing
// empty entry to prevent client from disconnecting.
if err := enc.Encode(madmin.SpeedTestResult{}); err != nil {
return
}
} }
w.(http.Flusher).Flush() w.(http.Flusher).Flush()
case result, ok := <-ch: case result, ok := <-ch:
@ -1289,6 +1299,7 @@ func (a adminAPIHandlers) ObjectSpeedTestHandler(w http.ResponseWriter, r *http.
if err := enc.Encode(result); err != nil { if err := enc.Encode(result); err != nil {
return return
} }
prevResult = result
w.(http.Flusher).Flush() w.(http.Flusher).Flush()
} }
} }