diff options
author | ulfjack <ulfjack@google.com> | 2017-11-28 01:14:34 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2017-11-28 01:16:40 -0800 |
commit | 32e7a1c55289ff286d5a6f0dea41d76fdf48582b (patch) | |
tree | 6189098c9f8d40967e6f78d0bfa015b0b820af66 /src/main/java/com/google/devtools/build/lib/worker | |
parent | 25eab014b36753d3b959f4f5f883d0c6ea2ccaad (diff) |
Simplify SpawnRunner interface
It turns out that the SUCCESS status is often misunderstood to mean "zero exit",
even though this is clearly documented. I've decided to add another status for
non-zero exit, and use success only for zero exit to avoid this pitfall.
Also, many of the status codes are set, but never used. I decided to reduce the
number of status codes to only those that are actually relevant, which
simplifies further processing. Instead, we should add a string message for the
error case when we need one - we're not using it right now, so I decided not to
add that yet.
PiperOrigin-RevId: 177129441
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/worker')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/worker/WorkerSpawnRunner.java | 5 |
1 files changed, 3 insertions, 2 deletions
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 f7853c936d..31e68be8f8 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 @@ -159,9 +159,10 @@ final class WorkerSpawnRunner implements SpawnRunner { FileOutErr outErr = policy.getFileOutErr(); response.getOutputBytes().writeTo(outErr.getErrorStream()); + int exitCode = response.getExitCode(); return new SpawnResult.Builder() - .setExitCode(response.getExitCode()) - .setStatus(SpawnResult.Status.SUCCESS) + .setExitCode(exitCode) + .setStatus(exitCode == 0 ? SpawnResult.Status.SUCCESS : SpawnResult.Status.NON_ZERO_EXIT) .setWallTime(wallTime) .build(); } |