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()