fix: slice append lose the data for NSScanner (#19373)

This commit is contained in:
jiuker 2024-03-28 23:13:36 +08:00 committed by GitHub
parent 7e45d84ace
commit 8222a640ac
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -688,12 +688,17 @@ func (z *erasureServerPools) NSScanner(ctx context.Context, updates chan<- DataU
updates <- DataUsageInfo{} // no buckets found update data usage to reflect latest state updates <- DataUsageInfo{} // no buckets found update data usage to reflect latest state
return nil return nil
} }
totalResults := 0
resultIndex := -1
for _, z := range z.serverPools {
totalResults += len(z.sets)
}
results = make([]dataUsageCache, totalResults)
// Collect for each set in serverPools. // Collect for each set in serverPools.
for _, z := range z.serverPools { for _, z := range z.serverPools {
for _, erObj := range z.sets { for _, erObj := range z.sets {
resultIndex++
wg.Add(1) wg.Add(1)
results = append(results, dataUsageCache{})
go func(i int, erObj *erasureObjects) { go func(i int, erObj *erasureObjects) {
updates := make(chan dataUsageCache, 1) updates := make(chan dataUsageCache, 1)
defer xioutil.SafeClose(updates) defer xioutil.SafeClose(updates)
@ -719,7 +724,7 @@ func (z *erasureServerPools) NSScanner(ctx context.Context, updates chan<- DataU
mu.Unlock() mu.Unlock()
return return
} }
}(len(results)-1, erObj) }(resultIndex, erObj)
} }
} }
updateCloser := make(chan chan struct{}) updateCloser := make(chan chan struct{})