diff options
author | 2016-08-11 23:11:33 +0000 | |
---|---|---|
committer | 2016-08-12 08:54:09 +0000 | |
commit | 2c5d51712814d0e1f624364a013fc21795db3eda (patch) | |
tree | 6758ea76e926ebe7596fab52c7cbd397349ada62 /src/main/java/com/google/devtools/build/lib/concurrent/ErrorClassifier.java | |
parent | d5353257a835631a83c25efff3b5560b5bbce7e7 (diff) |
Have AQV propagate the most severe error encountered by any of its tasks. Make sure that ParallelEvaluator treats SchedulerExceptions as less severe than other RuntimeExceptions (it already did, but add a comment emphasizing this).
The combination of the above means that we don't ignore hypothetical crashes in ParallelEvaluator worker threads _after_ a SchedulerException (e.g. due to an error in nokeep_going evaluation).
--
MOS_MIGRATED_REVID=130044230
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/concurrent/ErrorClassifier.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/concurrent/ErrorClassifier.java | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/concurrent/ErrorClassifier.java b/src/main/java/com/google/devtools/build/lib/concurrent/ErrorClassifier.java index 5a304198a9..2e832c1fd8 100644 --- a/src/main/java/com/google/devtools/build/lib/concurrent/ErrorClassifier.java +++ b/src/main/java/com/google/devtools/build/lib/concurrent/ErrorClassifier.java @@ -18,14 +18,20 @@ import com.google.devtools.build.lib.util.Preconditions; /** A classifier for {@link Error}s and {@link Exception}s. Used by {@link AbstractQueueVisitor}. */ public abstract class ErrorClassifier { - /** Classification of an error thrown by an action. */ + /** + * Classification of an error thrown by an action. + * + * <p>N.B. - These enum values are ordered from least severe to most severe. + */ public enum ErrorClassification { + /** Other running actions should be left alone.*/ + NOT_CRITICAL, /** All running actions should be stopped.*/ CRITICAL, - /** Same as CRITICAL, but also log the error.*/ + /** Same as {@link #CRITICAL}, but also log the error.*/ CRITICAL_AND_LOG, - /** Other running actions should be left alone.*/ - NOT_CRITICAL + /** Same as {@link #CRITICAL_AND_LOG}, but is even worse. */ + AS_CRITICAL_AS_POSSIBLE } /** Always treat exceptions as {@code NOT_CRITICAL}. */ @@ -39,19 +45,19 @@ public abstract class ErrorClassifier { /** * Used by {@link #classify} to classify {@link Exception}s. (Note that {@link Error}s - * are always classified as {@code CRITICAL_AND_LOG}.) + * are always classified as {@code AS_CRITICAL_AS_POSSIBLE}.) * * @param e the exception object to check */ protected abstract ErrorClassification classifyException(Exception e); /** - * Classify {@param e}. If {@code e} is an {@link Error}, it will be classified as {@code - * CRITICAL_AND_LOG}. Otherwise, calls {@link #classifyException}. + * Classify {@code e}. If {@code e} is an {@link Error}, it will be classified as + * {@code AS_CRITICAL_AS_POSSIBLE}. Otherwise, calls {@link #classifyException}. */ public final ErrorClassification classify(Throwable e) { if (e instanceof Error) { - return ErrorClassification.CRITICAL_AND_LOG; + return ErrorClassification.AS_CRITICAL_AS_POSSIBLE; } Preconditions.checkArgument(e instanceof Exception, e); return classifyException((Exception) e); |