Merge "In Soong, set max files soft limit to hard limit"
diff --git a/cmd/soong_ui/main.go b/cmd/soong_ui/main.go
index d80051c..a0cfbea 100644
--- a/cmd/soong_ui/main.go
+++ b/cmd/soong_ui/main.go
@@ -205,14 +205,7 @@
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 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)
+ }
+}