Correctly propagagate "catastrophic" failure modes in keep_going mode.
--
MOS_MIGRATED_REVID=108740689
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java b/src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java
index 8bd0da3..bb06d3d 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java
@@ -234,12 +234,13 @@
skyframeExecutor.reportCycles(eventHandler, cycles, entry.getKey());
hasCycles |= !Iterables.isEmpty(cycles);
}
- if (keepGoing && !resultHasCatastrophicError(result)) {
+ boolean hasCatastrophe = resultHasCatastrophicError(result);
+ if (keepGoing && !hasCatastrophe) {
return false;
}
if (hasCycles || result.errorMap().isEmpty()) {
// error map may be empty in the case of a catastrophe.
- throw new BuildFailedException();
+ throw new BuildFailedException(null, hasCatastrophe);
} else {
rethrow(Preconditions.checkNotNull(result.getError().getException()));
}