Update error handling for absolute symlink violations when computing diffs.
PiperOrigin-RevId: 689474329
Change-Id: Ie39bcb4410ee9d51d68f8d1c8cc53a6100355caf
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FileSystemValueCheckerInferringAncestors.java b/src/main/java/com/google/devtools/build/lib/skyframe/FileSystemValueCheckerInferringAncestors.java
index 0cda4aa1..9dd7859 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/FileSystemValueCheckerInferringAncestors.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/FileSystemValueCheckerInferringAncestors.java
@@ -31,6 +31,7 @@
import com.google.devtools.build.lib.util.AbruptExitException;
import com.google.devtools.build.lib.util.DetailedExitCode;
import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor;
+import com.google.devtools.build.lib.vfs.DetailedIOException;
import com.google.devtools.build.lib.vfs.Dirent;
import com.google.devtools.build.lib.vfs.FileStateKey;
import com.google.devtools.build.lib.vfs.RootedPath;
@@ -211,6 +212,14 @@
Futures.getDone(future);
} catch (ExecutionException e) {
if (e.getCause() instanceof StatFailedException statFailed) {
+ if (statFailed.getCause() instanceof DetailedIOException detailedException) {
+ FailureDetail failureDetailWithUpdatedErrorMessage =
+ detailedException.getDetailedExitCode().getFailureDetail().toBuilder()
+ .setMessage(statFailed.getMessage() + ": " + detailedException.getMessage())
+ .build();
+ throw new AbruptExitException(
+ DetailedExitCode.of(failureDetailWithUpdatedErrorMessage), e);
+ }
throw new AbruptExitException(
DetailedExitCode.of(
FailureDetail.newBuilder()