Use Set<Target> instead of ResolvedTargets<Target> when saving resolved target patterns in query.
We never use anything but the getTargets() field, so it's useless to store other things.
--
MOS_MIGRATED_REVID=100846573
diff --git a/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java
index db9d637..208087f 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java
@@ -13,10 +13,12 @@
// limitations under the License.
package com.google.devtools.build.lib.query2;
+import com.google.common.base.Function;
import com.google.common.base.Preconditions;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
+import com.google.common.collect.Maps;
import com.google.devtools.build.lib.cmdline.ResolvedTargets;
import com.google.devtools.build.lib.cmdline.TargetParsingException;
import com.google.devtools.build.lib.events.EventHandler;
@@ -112,7 +114,7 @@
// We can safely ignore the boolean error flag. The evaluateQuery() method above wraps the
// entire query computation in an error sensor.
- Set<Target> targets = new LinkedHashSet<>(resolvedTargetPatterns.get(pattern).getTargets());
+ Set<Target> targets = new LinkedHashSet<>(resolvedTargetPatterns.get(pattern));
// Sets.filter would be more convenient here, but can't deal with exceptions.
Iterator<Target> targetIterator = targets.iterator();
@@ -345,13 +347,22 @@
return dependentFiles;
}
- protected Map<String, ResolvedTargets<Target>> preloadOrThrow(QueryExpression caller,
- Collection<String> patterns) throws TargetParsingException {
+ private static final Function<ResolvedTargets<Target>, Set<Target>> RESOLVED_TARGETS_TO_TARGETS =
+ new Function<ResolvedTargets<Target>, Set<Target>>() {
+ @Override
+ public Set<Target> apply(ResolvedTargets<Target> resolvedTargets) {
+ return resolvedTargets.getTargets();
+ }
+ };
+
+ protected Map<String, Set<Target>> preloadOrThrow(
+ QueryExpression caller, Collection<String> patterns) throws TargetParsingException {
try {
// Note that this may throw a RuntimeException if deps are missing in Skyframe and this is
// being called from within a SkyFunction.
- return targetPatternEvaluator.preloadTargetPatterns(
- eventHandler, patterns, keepGoing);
+ return Maps.transformValues(
+ targetPatternEvaluator.preloadTargetPatterns(eventHandler, patterns, keepGoing),
+ RESOLVED_TARGETS_TO_TARGETS);
} catch (InterruptedException e) {
// TODO(bazel-team): Propagate the InterruptedException from here [skyframe-loading].
throw new TargetParsingException("interrupted");