aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar Janak Ramakrishnan <janakr@google.com>2016-07-19 17:25:55 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-07-19 18:12:51 +0000
commit6dbe2df504853f27c28e5bb67e7764667c885e74 (patch)
tree0cd36ddbbae506eee7f30eb6058280e16427110a /src/main/java/com/google
parent5206a67ff28f8479d4ce63ecf684f7e24404ac06 (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')
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/BugReport.java4
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();
}