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

@@ -333,16 +333,10 @@ func isQuitting(endCh chan struct{}) bool {
}
}
func (s *posix) waitForLowActiveIO() error {
func (s *posix) waitForLowActiveIO() {
for atomic.LoadInt32(&s.activeIOCount) >= s.maxActiveIOCount {
select {
case <-GlobalServiceDoneCh:
return errors.New("forced exit")
case <-time.NewTimer(lowActiveIOWaitTick).C:
continue
}
time.Sleep(lowActiveIOWaitTick)
}
return nil
}
func (s *posix) CrawlAndGetDataUsage(endCh <-chan struct{}) (DataUsageInfo, error) {