diff options
author | Janak Ramakrishnan <janakr@google.com> | 2016-07-19 17:25:55 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2016-07-19 18:12:51 +0000 |
commit | 6dbe2df504853f27c28e5bb67e7764667c885e74 (patch) | |
tree | 0cd36ddbbae506eee7f30eb6058280e16427110a /src/main/java/com/google/devtools | |
parent | 5206a67ff28f8479d4ce63ecf684f7e24404ac06 (diff) |
When crashing, exit with the OOM exit code if the root cause of the exception that caused the crash is an OOM. Too many systems wrap Errors in other exceptions, for instance https://github.com/google/guava/blob/master/guava-gwt/src-super/com/google/common/cache/super/com/google/common/cache/LocalCache.java#L267
--
MOS_MIGRATED_REVID=127845350
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java | 6 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/BugReport.java | 4 |
2 files changed, 3 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java index ebb512df09..fe6a5c8039 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java @@ -46,7 +46,6 @@ import com.google.devtools.common.options.OpaqueOptionsData; import com.google.devtools.common.options.OptionPriority; import com.google.devtools.common.options.OptionsParser; import com.google.devtools.common.options.OptionsParsingException; - import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; @@ -58,7 +57,6 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import java.util.logging.Level; - import javax.annotation.Nullable; /** @@ -496,9 +494,7 @@ public class BlazeCommandDispatcher { e.printStackTrace(); BugReport.printBug(outErr, e); BugReport.sendBugReport(e, args, crashData); - numericExitCode = e instanceof OutOfMemoryError - ? ExitCode.OOM_ERROR.getNumericExitCode() - : ExitCode.BLAZE_INTERNAL_ERROR.getNumericExitCode(); + numericExitCode = BugReport.getExitCodeForThrowable(e); throw new ShutdownBlazeServerException(numericExitCode, ShutdownMethod.CLEAN, e); } finally { env.getEventBus().post(new AfterCommandEvent()); diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BugReport.java b/src/main/java/com/google/devtools/build/lib/runtime/BugReport.java index d81a8b7c00..aadaf10c51 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/BugReport.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/BugReport.java @@ -14,13 +14,13 @@ package com.google.devtools.build.lib.runtime; import com.google.common.base.Joiner; +import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.BlazeVersionInfo; import com.google.devtools.build.lib.util.ExitCode; import com.google.devtools.build.lib.util.LoggingUtil; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.util.io.OutErr; - import java.io.PrintStream; import java.util.Arrays; import java.util.List; @@ -122,7 +122,7 @@ public abstract class BugReport { /** Get exit code corresponding to throwable. */ public static int getExitCodeForThrowable(Throwable throwable) { - return (throwable instanceof OutOfMemoryError) + return (Throwables.getRootCause(throwable) instanceof OutOfMemoryError) ? ExitCode.OOM_ERROR.getNumericExitCode() : ExitCode.BLAZE_INTERNAL_ERROR.getNumericExitCode(); } |