diff --git a/cmd/soong_ui/main.go b/cmd/soong_ui/main.go index d80051c77..a0cfbea5d 100644 --- a/cmd/soong_ui/main.go +++ b/cmd/soong_ui/main.go @@ -205,14 +205,7 @@ func main() { buildCtx.Verbosef("Parallelism (local/remote/highmem): %v/%v/%v", config.Parallel(), config.RemoteParallel(), config.HighmemParallel()) - { - var limits syscall.Rlimit - err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &limits) - if err != nil { - buildCtx.Verbosef("Failed to get file limit:", err) - } - buildCtx.Verbosef("Current file limits: %d soft, %d hard", limits.Cur, limits.Max) - } + setMaxFiles(buildCtx) { // The order of the function calls is important. The last defer function call @@ -614,3 +607,24 @@ func populateExternalDistDirHelper(ctx build.Context, config build.Config, inter } } } + +func setMaxFiles(ctx build.Context) { + var limits syscall.Rlimit + + err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &limits) + if err != nil { + ctx.Println("Failed to get file limit:", err) + return + } + + ctx.Verbosef("Current file limits: %d soft, %d hard", limits.Cur, limits.Max) + if limits.Cur == limits.Max { + return + } + + limits.Cur = limits.Max + err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &limits) + if err != nil { + ctx.Println("Failed to increase file limit:", err) + } +}