improve remote execution error messages
If the error originated in the gRPC library (it usually does) then
display the error as "STATUS CODE: error message" directly to the
user.
Before this change:
"java.io.IOException: io.grpc.StatusRuntimeException: UNAVAILABLE:
failed to dns resolve hostname"
After this change:
"UNAVAILABLE: failed to dns resolve hostname"
Closes #8599.
PiperOrigin-RevId: 254617861
diff --git a/src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnRunnerTest.java b/src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnRunnerTest.java
index 5dd3713..567629a 100644
--- a/src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnRunnerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnRunnerTest.java
@@ -61,7 +61,6 @@
import com.google.devtools.build.lib.events.Reporter;
import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.exec.ExecutionOptions;
-import com.google.devtools.build.lib.exec.SpawnExecException;
import com.google.devtools.build.lib.exec.SpawnRunner;
import com.google.devtools.build.lib.exec.SpawnRunner.SpawnExecutionContext;
import com.google.devtools.build.lib.exec.util.FakeOwner;
@@ -739,9 +738,9 @@
SpawnExecutionContext policy =
new FakeSpawnExecutionContext(spawn, fakeFileCache, execRoot, outErr);
- SpawnExecException e = assertThrows(SpawnExecException.class, () -> runner.exec(spawn, policy));
- assertThat(e.getSpawnResult().exitCode()).isEqualTo(ExitCode.REMOTE_ERROR.getNumericExitCode());
- assertThat(e.getSpawnResult().getDetailMessage("", "", false, false)).contains("reasons");
+ SpawnResult result = runner.exec(spawn, policy);
+ assertThat(result.exitCode()).isEqualTo(ExitCode.REMOTE_ERROR.getNumericExitCode());
+ assertThat(result.getDetailMessage("", "", false, false)).contains("reasons");
}
@Test
@@ -759,9 +758,9 @@
SpawnExecutionContext policy =
new FakeSpawnExecutionContext(spawn, fakeFileCache, execRoot, outErr);
- SpawnExecException e = assertThrows(SpawnExecException.class, () -> runner.exec(spawn, policy));
- assertThat(e.getSpawnResult().exitCode()).isEqualTo(ExitCode.REMOTE_ERROR.getNumericExitCode());
- assertThat(e.getSpawnResult().getDetailMessage("", "", false, false)).contains("reasons");
+ SpawnResult result = runner.exec(spawn, policy);
+ assertThat(result.exitCode()).isEqualTo(ExitCode.REMOTE_ERROR.getNumericExitCode());
+ assertThat(result.getDetailMessage("", "", false, false)).contains("reasons");
}
@Test
@@ -910,8 +909,8 @@
new FakeSpawnExecutionContext(spawn, fakeFileCache, execRoot, outErr);
// act
- SpawnExecException e = assertThrows(SpawnExecException.class, () -> runner.exec(spawn, policy));
- assertThat(e.getMessage()).isEqualTo(downloadFailure.getMessage());
+ SpawnResult result = runner.exec(spawn, policy);
+ assertThat(result.getFailureMessage()).isEqualTo(downloadFailure.getMessage());
// assert
verify(cache)