aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java
diff options
context:
space:
mode:
authorGravatar Eric Fellheimer <felly@google.com>2016-03-07 21:14:44 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-03-08 03:45:38 +0000
commitfb601435addde341a570c6095d0634a20e4e5107 (patch)
tree7432f95b3a884577c6b4200714f3f6aee68cd4c4 /src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java
parent38a2b885168ed27dfdb48771dedd1e02fd0d9b0a (diff)
Fix hypothetical bug when querying for packages in bulk. We were assuming all packages were successful.
Also add Preconditions check to ensure we get the expected Package response when retrieving packages in bulk when we know the set of Package identifiers correspond to valid packages. -- MOS_MIGRATED_REVID=116580093
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java
index 65a737ec7f..46bd0c2693 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java
@@ -20,6 +20,7 @@ import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
+import com.google.common.collect.Sets;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.cmdline.RepositoryName;
@@ -147,6 +148,10 @@ public class RecursivePackageProviderBackedTargetPatternResolver
throws TargetParsingException, InterruptedException {
try {
Map<PackageIdentifier, Package> pkgs = bulkGetPackages(pkgIds);
+ if (pkgs.size() != Iterables.size(pkgIds)) {
+ throw new IllegalStateException("Bulk package retrieval missing results: "
+ + Sets.difference(ImmutableSet.copyOf(pkgIds), pkgs.keySet()));
+ }
ImmutableMap.Builder<PackageIdentifier, ResolvedTargets<Target>> result =
ImmutableMap.builder();
for (PackageIdentifier pkgId : pkgIds) {
@@ -157,7 +162,8 @@ public class RecursivePackageProviderBackedTargetPatternResolver
} catch (NoSuchThingException e) {
String message = TargetPatternResolverUtil.getParsingErrorMessage(
e.getMessage(), originalPattern);
- throw new TargetParsingException(message, e);
+ throw new IllegalStateException(
+ "Mismatch: Expected given pkgIds to correspond to valid Packages. " + message, e);
}
}