diff options
author | Eric Fellheimer <felly@google.com> | 2016-03-07 21:14:44 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2016-03-08 03:45:38 +0000 |
commit | fb601435addde341a570c6095d0634a20e4e5107 (patch) | |
tree | 7432f95b3a884577c6b4200714f3f6aee68cd4c4 /src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java | |
parent | 38a2b885168ed27dfdb48771dedd1e02fd0d9b0a (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.java | 8 |
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); } } |