do not block on send channels under high load (#19090)

all send channels must compete with `ctx` if not
they will perpetually stay alive.
This commit is contained in:
Harshavardhana
2024-02-20 15:00:35 -08:00
committed by GitHub
parent c7f7c47388
commit 35deb1a8e2
4 changed files with 30 additions and 7 deletions

View File

@@ -2869,14 +2869,22 @@ func (s *xlStorage) ReadMultiple(ctx context.Context, req ReadMultipleReq, resp
if req.MaxSize > 0 && int64(len(data)) > req.MaxSize {
r.Exists = true
r.Error = fmt.Sprintf("max size (%d) exceeded: %d", req.MaxSize, len(data))
resp <- r
continue
select {
case <-ctx.Done():
return ctx.Err()
case resp <- r:
continue
}
}
found++
r.Exists = true
r.Data = data
r.Modtime = mt
resp <- r
select {
case <-ctx.Done():
return ctx.Err()
case resp <- r:
}
if req.MaxResults > 0 && found >= req.MaxResults {
return nil
}