Avoid select inside a recursive function to avoid CPU spikes (#8923)

Additionally also allow configurable go-routines
This commit is contained in:
Harshavardhana
2020-02-04 06:15:59 +05:30
committed by GitHub
parent 9bbf5cb74f
commit 2d295a31de
4 changed files with 54 additions and 97 deletions

View File

@@ -19,7 +19,6 @@ package cmd
import (
"bytes"
"context"
"errors"
"fmt"
"io"
"io/ioutil"
@@ -226,18 +225,10 @@ func (fs *FSObjects) StorageInfo(ctx context.Context) StorageInfo {
return storageInfo
}
func (fs *FSObjects) waitForLowActiveIO() error {
func (fs *FSObjects) waitForLowActiveIO() {
for atomic.LoadInt64(&fs.activeIOCount) >= fs.maxActiveIOCount {
select {
case <-GlobalServiceDoneCh:
return errors.New("forced exit")
case <-time.NewTimer(lowActiveIOWaitTick).C:
continue
}
time.Sleep(lowActiveIOWaitTick)
}
return nil
}
// CrawlAndGetDataUsage returns data usage stats of the current FS deployment