Create non fatal exception when errors are not detailed with a FailureDetail. PiperOrigin-RevId: 447471364
diff --git a/src/main/java/com/google/devtools/build/lib/query2/query/TargetEdgeErrorObserver.java b/src/main/java/com/google/devtools/build/lib/query2/query/TargetEdgeErrorObserver.java index 6ce7f5d..2681228 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/query/TargetEdgeErrorObserver.java +++ b/src/main/java/com/google/devtools/build/lib/query2/query/TargetEdgeErrorObserver.java
@@ -15,6 +15,7 @@ package com.google.devtools.build.lib.query2.query; import com.google.devtools.build.lib.bugreport.BugReport; +import com.google.devtools.build.lib.bugreport.BugReport.NonFatalBugReport; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety; import com.google.devtools.build.lib.packages.Attribute; @@ -59,7 +60,7 @@ @Override public void missingEdge(Target target, Label label, NoSuchThingException e) { hasErrors = true; - errorCode.compareAndSet(/*expect=*/ null, /*update=*/ e.getDetailedExitCode()); + errorCode.compareAndSet(/*expectedValue=*/ null, /*newValue=*/ e.getDetailedExitCode()); } /** @@ -93,11 +94,18 @@ this.hasErrors = true; FailureDetail failureDetail = node.getPackage().getFailureDetail(); if (failureDetail != null) { - errorCode.compareAndSet(/*expect=*/ null, /*update=*/ DetailedExitCode.of(failureDetail)); + errorCode.compareAndSet( + /*expectedValue=*/ null, /*newValue=*/ DetailedExitCode.of(failureDetail)); } else { - BugReport.sendBugReport( - new IllegalStateException("Undetailed error from package: " + node)); + BugReport.sendBugReport(new UndetailedErrorFromPackageException(node)); } } } + + private static final class UndetailedErrorFromPackageException extends RuntimeException + implements NonFatalBugReport { + UndetailedErrorFromPackageException(Target node) { + super("Undetailed error from package: " + node); + } + } }