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));
   }