Merge "Move startRBE error handling to the main goroutine" into main am: 31783628ff am: 543c7e121c

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2849973

Change-Id: I4096905518f39a1c5607fb58f9bc769784b823c4
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Colin Cross
2023-12-05 06:05:12 +00:00
committed by Automerger Merge Worker
2 changed files with 19 additions and 6 deletions

View File

@@ -283,11 +283,16 @@ func Build(ctx Context, config Config) {
}
rbeCh := make(chan bool)
var rbePanic any
if config.StartRBE() {
cleanupRBELogsDir(ctx, config)
checkRBERequirements(ctx, config)
go func() {
defer func() {
rbePanic = recover()
close(rbeCh)
}()
startRBE(ctx, config)
close(rbeCh)
}()
defer DumpRBEMetrics(ctx, config, filepath.Join(config.LogsDir(), "rbe_metrics.pb"))
} else {
@@ -345,6 +350,11 @@ func Build(ctx Context, config Config) {
}
<-rbeCh
if rbePanic != nil {
// If there was a ctx.Fatal in startRBE, rethrow it.
panic(rbePanic)
}
if what&RunNinja != 0 {
if what&RunKati != 0 {
installCleanIfNecessary(ctx, config)

View File

@@ -95,14 +95,10 @@ func cleanupRBELogsDir(ctx Context, config Config) {
}
}
func startRBE(ctx Context, config Config) {
func checkRBERequirements(ctx Context, config Config) {
if !config.GoogleProdCredsExist() && prodCredsAuthType(config) {
ctx.Fatalf("Unable to start RBE reproxy\nFAILED: Missing LOAS credentials.")
}
ctx.BeginTrace(metrics.RunSetupTool, "rbe_bootstrap")
defer ctx.EndTrace()
ctx.Status.Status("Starting rbe...")
if u := ulimitOrFatal(ctx, config, "-u"); u < rbeLeastNProcs {
ctx.Fatalf("max user processes is insufficient: %d; want >= %d.\n", u, rbeLeastNProcs)
@@ -115,6 +111,13 @@ func startRBE(ctx Context, config Config) {
ctx.Fatalf("Unable to create logs dir (%v) for RBE: %v", config.rbeProxyLogsDir, err)
}
}
}
func startRBE(ctx Context, config Config) {
ctx.BeginTrace(metrics.RunSetupTool, "rbe_bootstrap")
defer ctx.EndTrace()
ctx.Status.Status("Starting rbe...")
cmd := Command(ctx, config, "startRBE bootstrap", rbeCommand(ctx, config, bootstrapCmd))