mirror of
https://github.com/minio/minio.git
synced 2025-11-07 12:52:58 -05:00
avoid repeated large allocations for large parts (#17968)
objects with 10,000 parts and many of them can cause a large memory spike which can potentially lead to OOM due to lack of GC. with previous PR reducing the memory usage significantly in #17963, this PR reduces this further by 80% under repeated calls. Scanner sub-system has no use for the slice of Parts(), it is better left empty. ``` benchmark old ns/op new ns/op delta BenchmarkToFileInfo/ToFileInfo-8 295658 188143 -36.36% benchmark old allocs new allocs delta BenchmarkToFileInfo/ToFileInfo-8 61 60 -1.64% benchmark old bytes new bytes delta BenchmarkToFileInfo/ToFileInfo-8 1097210 227255 -79.29% ```
This commit is contained in:
@@ -26,7 +26,7 @@ import (
|
||||
)
|
||||
|
||||
func (x xlMetaV2) listFreeVersions(volume, path string) ([]FileInfo, error) {
|
||||
fivs, err := x.ListVersions(volume, path)
|
||||
fivs, err := x.ListVersions(volume, path, true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -179,7 +179,7 @@ func TestFreeVersion(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, ft := range freeVersionsTests {
|
||||
fi, err := xl.ToFileInfo(ft.vol, ft.name, "", ft.inclFreeVers)
|
||||
fi, err := xl.ToFileInfo(ft.vol, ft.name, "", ft.inclFreeVers, true)
|
||||
if err != nil && !errors.Is(err, ft.expectedErr) {
|
||||
t.Fatalf("ToFileInfo failed due to %v", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user