fix: pop entries from each drives in parallel (#9918)

This commit is contained in:
Harshavardhana
2020-06-25 23:20:12 -07:00
parent d53006c422
commit a5b1d8731c
4 changed files with 43 additions and 9 deletions
+18 -2
View File
@@ -831,9 +831,17 @@ func (f *FileInfoCh) Push(fi FileInfo) {
// if the caller wishes to list N entries to call lexicallySortedEntry
// N times until this boolean is 'false'.
func lexicallySortedEntry(entryChs []FileInfoCh, entries []FileInfo, entriesValid []bool) (FileInfo, int, bool) {
var wg sync.WaitGroup
for i := range entryChs {
entries[i], entriesValid[i] = entryChs[i].Pop()
i := i
wg.Add(1)
// Pop() entries in parallel for large drive setups.
go func() {
defer wg.Done()
entries[i], entriesValid[i] = entryChs[i].Pop()
}()
}
wg.Wait()
var isTruncated = false
for _, valid := range entriesValid {
@@ -915,9 +923,17 @@ func mergeEntriesCh(entryChs []FileInfoCh, maxKeys int, ndisks int) (entries Fil
}
func isTruncated(entryChs []FileInfoCh, entries []FileInfo, entriesValid []bool) bool {
var wg sync.WaitGroup
for i := range entryChs {
entries[i], entriesValid[i] = entryChs[i].Pop()
i := i
wg.Add(1)
// Pop() entries in parallel for large drive setups.
go func() {
defer wg.Done()
entries[i], entriesValid[i] = entryChs[i].Pop()
}()
}
wg.Wait()
var isTruncated = false
for _, valid := range entriesValid {