mirror of
https://github.com/minio/minio.git
synced 2024-12-26 23:25:54 -05:00
code clean for dynamicSleeper (#19499)
This commit is contained in:
parent
d1c58fc2eb
commit
f3d6a2dd37
@ -1422,48 +1422,7 @@ func (d *dynamicSleeper) Timer(ctx context.Context) func() {
|
|||||||
t := time.Now()
|
t := time.Now()
|
||||||
return func() {
|
return func() {
|
||||||
doneAt := time.Now()
|
doneAt := time.Now()
|
||||||
for {
|
d.Sleep(ctx, doneAt.Sub(t))
|
||||||
// Grab current values
|
|
||||||
d.mu.RLock()
|
|
||||||
minWait, maxWait := d.minSleep, d.maxSleep
|
|
||||||
factor := d.factor
|
|
||||||
cycle := d.cycle
|
|
||||||
d.mu.RUnlock()
|
|
||||||
elapsed := doneAt.Sub(t)
|
|
||||||
// Don't sleep for really small amount of time
|
|
||||||
wantSleep := time.Duration(float64(elapsed) * factor)
|
|
||||||
if wantSleep <= minWait {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if maxWait > 0 && wantSleep > maxWait {
|
|
||||||
wantSleep = maxWait
|
|
||||||
}
|
|
||||||
timer := time.NewTimer(wantSleep)
|
|
||||||
select {
|
|
||||||
case <-ctx.Done():
|
|
||||||
if !timer.Stop() {
|
|
||||||
<-timer.C
|
|
||||||
}
|
|
||||||
if d.isScanner {
|
|
||||||
globalScannerMetrics.incTime(scannerMetricYield, wantSleep)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
case <-timer.C:
|
|
||||||
if d.isScanner {
|
|
||||||
globalScannerMetrics.incTime(scannerMetricYield, wantSleep)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
case <-cycle:
|
|
||||||
if !timer.Stop() {
|
|
||||||
// We expired.
|
|
||||||
<-timer.C
|
|
||||||
if d.isScanner {
|
|
||||||
globalScannerMetrics.incTime(scannerMetricYield, wantSleep)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user