Do not pre-cache changed files under managed directories
Closes #8337.
PiperOrigin-RevId: 248530274
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/DirtinessCheckerUtils.java b/src/main/java/com/google/devtools/build/lib/skyframe/DirtinessCheckerUtils.java
index 860f437..daaefcb 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/DirtinessCheckerUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/DirtinessCheckerUtils.java
@@ -144,7 +144,8 @@
return SkyValueDirtinessChecker.DirtyResult.notDirty(oldValue);
}
FileType fileType = externalFilesHelper.getAndNoteFileType((RootedPath) skyKey.argument());
- if (fileType == FileType.EXTERNAL_REPO) {
+ if (fileType == FileType.EXTERNAL_REPO
+ || fileType == FileType.EXTERNAL_IN_MANAGED_DIRECTORY) {
// Files under output_base/external have a dependency on the WORKSPACE file, so we don't add
// a new SkyValue to the graph yet because it might change once the WORKSPACE file has been
// parsed.
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
index 9c7eefe..a760a30 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
@@ -490,9 +490,15 @@
ExternalFilesHelper tmpExternalFilesHelper =
externalFilesHelper.cloneWithFreshExternalFilesKnowledge();
// See the comment for FileType.OUTPUT for why we need to consider output files here.
- EnumSet<FileType> fileTypesToCheck = checkOutputFiles
- ? EnumSet.of(FileType.EXTERNAL, FileType.EXTERNAL_REPO, FileType.OUTPUT)
- : EnumSet.of(FileType.EXTERNAL, FileType.EXTERNAL_REPO);
+ EnumSet<FileType> fileTypesToCheck =
+ checkOutputFiles
+ ? EnumSet.of(
+ FileType.EXTERNAL,
+ FileType.EXTERNAL_REPO,
+ FileType.EXTERNAL_IN_MANAGED_DIRECTORY,
+ FileType.OUTPUT)
+ : EnumSet.of(
+ FileType.EXTERNAL, FileType.EXTERNAL_REPO, FileType.EXTERNAL_IN_MANAGED_DIRECTORY);
logger.info(
"About to scan skyframe graph checking for filesystem nodes of types "
+ Iterables.toString(fileTypesToCheck));