Add identifying information to failure message for all local spawn execution errors.
PiperOrigin-RevId: 334600311
diff --git a/src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java
index 6ff98fb..695b797 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java
@@ -305,7 +305,8 @@
.setStatus(Status.EXECUTION_DENIED)
.setExitCode(LOCAL_EXEC_ERROR)
.setExecutorHostname(hostName)
- .setFailureDetail(makeFailureDetail(LOCAL_EXEC_ERROR, Status.EXECUTION_DENIED))
+ .setFailureDetail(
+ makeFailureDetail(LOCAL_EXEC_ERROR, Status.EXECUTION_DENIED, actionType))
.build();
}
@@ -410,7 +411,8 @@
.setStatus(Status.EXECUTION_FAILED)
.setExitCode(LOCAL_EXEC_ERROR)
.setExecutorHostname(hostName)
- .setFailureDetail(makeFailureDetail(LOCAL_EXEC_ERROR, Status.EXECUTION_FAILED))
+ .setFailureDetail(
+ makeFailureDetail(LOCAL_EXEC_ERROR, Status.EXECUTION_FAILED, actionType))
.build();
}
setState(State.SUCCESS);
@@ -431,7 +433,7 @@
.setExecutorHostname(hostName)
.setWallTime(wallTime);
if (status != Status.SUCCESS) {
- spawnResultBuilder.setFailureDetail(makeFailureDetail(exitCode, status));
+ spawnResultBuilder.setFailureDetail(makeFailureDetail(exitCode, status, actionType));
}
if (statisticsPath != null) {
ExecutionStatistics.getResourceUsage(statisticsPath)
@@ -509,7 +511,7 @@
}
}
- private static FailureDetail makeFailureDetail(int exitCode, Status status) {
+ private static FailureDetail makeFailureDetail(int exitCode, Status status, String actionType) {
FailureDetails.Spawn.Builder spawnFailure = FailureDetails.Spawn.newBuilder();
switch (status) {
case SUCCESS:
@@ -540,7 +542,7 @@
break;
}
return FailureDetail.newBuilder()
- .setMessage("local spawn failed")
+ .setMessage("local spawn failed for " + actionType)
.setSpawn(spawnFailure)
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnCache.java b/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnCache.java
index 4c9077a..e72c04e 100644
--- a/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnCache.java
+++ b/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnCache.java
@@ -209,10 +209,11 @@
SpawnResult spawnResult =
createSpawnResult(
result.getExitCode(),
- /* cacheHit= */ true,
+ /*cacheHit=*/ true,
"remote",
inMemoryOutput,
- spawnMetrics.build());
+ spawnMetrics.build(),
+ spawn.getMnemonic());
return SpawnCache.success(spawnResult);
}
} catch (CacheNotFoundException e) {
diff --git a/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java
index b58e203..e4664ff 100644
--- a/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java
@@ -516,7 +516,8 @@
.setFetchTime(fetchTime.elapsed().minus(networkTimeEnd.minus(networkTimeStart)))
.setTotalTime(totalTime.elapsed())
.setNetworkTime(networkTimeEnd)
- .build());
+ .build(),
+ spawn.getMnemonic());
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/remote/util/Utils.java b/src/main/java/com/google/devtools/build/lib/remote/util/Utils.java
index 71847e7..d6f2ffc 100644
--- a/src/main/java/com/google/devtools/build/lib/remote/util/Utils.java
+++ b/src/main/java/com/google/devtools/build/lib/remote/util/Utils.java
@@ -92,7 +92,8 @@
boolean cacheHit,
String runnerName,
@Nullable InMemoryOutput inMemoryOutput,
- SpawnMetrics spawnMetrics) {
+ SpawnMetrics spawnMetrics,
+ String mnemonic) {
SpawnResult.Builder builder =
new SpawnResult.Builder()
.setStatus(exitCode == 0 ? Status.SUCCESS : Status.NON_ZERO_EXIT)
@@ -104,7 +105,7 @@
if (exitCode != 0) {
builder.setFailureDetail(
FailureDetail.newBuilder()
- .setMessage("remote spawn failed")
+ .setMessage(mnemonic + " returned a non-zero exit code when running remotely")
.setSpawn(FailureDetails.Spawn.newBuilder().setCode(Code.NON_ZERO_EXIT))
.build());
}
diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerSpawnRunner.java
index 4fc37e2..a5ea6df 100644
--- a/src/main/java/com/google/devtools/build/lib/worker/WorkerSpawnRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerSpawnRunner.java
@@ -241,7 +241,7 @@
if (exitCode != 0) {
builder.setFailureDetail(
FailureDetail.newBuilder()
- .setMessage("worker spawn failed")
+ .setMessage("worker spawn failed for " + spawn.getMnemonic())
.setSpawn(
FailureDetails.Spawn.newBuilder()
.setCode(FailureDetails.Spawn.Code.NON_ZERO_EXIT)