Refactors RBuildFilesVisitor
RELNOTES: None
PiperOrigin-RevId: 227696398
diff --git a/src/main/java/com/google/devtools/build/lib/query2/ParallelSkyQueryUtils.java b/src/main/java/com/google/devtools/build/lib/query2/ParallelSkyQueryUtils.java
index f8d6a3a..df706da 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/ParallelSkyQueryUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/ParallelSkyQueryUtils.java
@@ -32,6 +32,7 @@
import com.google.devtools.build.lib.query2.engine.QueryUtil;
import com.google.devtools.build.lib.query2.engine.QueryUtil.AggregateAllCallback;
import com.google.devtools.build.lib.query2.engine.Uniquifier;
+import com.google.devtools.build.lib.skyframe.SkyFunctions;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.skyframe.SkyKey;
import java.util.Collection;
@@ -168,7 +169,18 @@
Callback<Target> callback) throws QueryException, InterruptedException {
Uniquifier<SkyKey> keyUniquifier = env.createSkyKeyUniquifier();
RBuildFilesVisitor visitor =
- new RBuildFilesVisitor(env, keyUniquifier, context, callback);
+ new RBuildFilesVisitor(
+ env,
+ keyUniquifier,
+ context,
+ callback,
+ /*rdepFilter=*/ rdep ->
+ // Packages may depend on the existence of subpackages, but these edges aren't
+ // relevant to rbuildfiles. They may also depend on files transitively through
+ // globs, but these cannot be included in load statements and so we don't traverse
+ // through these either.
+ !rdep.functionName().equals(SkyFunctions.PACKAGE_LOOKUP)
+ && !rdep.functionName().equals(SkyFunctions.GLOB));
visitor.visitAndWaitForCompletion(env.getFileStateKeysForFileFragments(fileIdentifiers));
}