aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe
diff options
context:
space:
mode:
authorGravatar Janak Ramakrishnan <janakr@google.com>2016-08-15 21:54:55 +0000
committerGravatar Philipp Wollermann <philwo@google.com>2016-08-16 15:21:17 +0000
commit3c0adb26bac6d756fb97e4bcc6d4e5b2cefa5eeb (patch)
treec77f6438711f4b23d6c528907a81e23dc9e6dc91 /src/main/java/com/google/devtools/build/lib/skyframe
parent89125d5ee83f562c309a792a7c56ce24452e61ea (diff)
Allow Skyframe graph lookups and value retrievals to throw InterruptedException.
The only place we now don't handle InterruptedException is in the action graph created after analysis, since I'm not sure that will be around for that much longer. -- MOS_MIGRATED_REVID=130327770
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java27
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ArtifactFunction.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/CollectPackagesUnderDirectoryFunction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/CompletionFunction.java21
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationCollectionFunction.java23
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentFunction.java24
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java50
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunction.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/CoverageReportFunction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingFunction.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingStateFunction.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ExternalPackageFunction.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/FileFunction.java24
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/FileStateFunction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunction.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/GlobFunction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java22
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PackageErrorFunction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java32
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java21
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/RecursiveDirectoryTraversalFunction.java20
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunction.java21
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeAwareAction.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunction.java24
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TargetMarkerFunction.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternValue.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternsResultBuilder.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TestCompletionFunction.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionFunction.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java19
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java32
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java22
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusFunction.java2
52 files changed, 339 insertions, 324 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java
index 8ec6f0ee02..19fb401ec0 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java
@@ -196,11 +196,12 @@ public class ActionExecutionFunction implements SkyFunction, CompletionReceiver
* the action cache's view of this action contains additional inputs, it will request metadata for
* them, so we consider those inputs as dependencies of this action as well. Returns null if some
* dependencies were missing and this ActionExecutionFunction needs to restart.
+ *
* @throws ActionExecutionFunctionException
*/
@Nullable
private AllInputs collectInputs(Action action, Environment env)
- throws ActionExecutionFunctionException {
+ throws ActionExecutionFunctionException, InterruptedException {
Iterable<Artifact> allKnownInputs = Iterables.concat(
action.getInputs(), action.getRunfilesSupplier().getArtifacts());
if (action.inputsKnown()) {
@@ -264,7 +265,7 @@ public class ActionExecutionFunction implements SkyFunction, CompletionReceiver
@Override
public Map<PathFragment, Root> findPackageRootsForFiles(Iterable<PathFragment> execPaths)
- throws PackageRootResolutionException {
+ throws PackageRootResolutionException, InterruptedException {
Preconditions.checkState(keysRequested.isEmpty(),
"resolver should only be called once: %s %s", keysRequested, execPaths);
// Create SkyKeys list based on execPaths.
@@ -316,7 +317,7 @@ public class ActionExecutionFunction implements SkyFunction, CompletionReceiver
@Override
@Nullable
public Map<PathFragment, Root> findPackageRoots(Iterable<PathFragment> execPaths)
- throws PackageRootResolutionException {
+ throws PackageRootResolutionException, InterruptedException {
// call sites for this implementation of PackageRootResolver shouldn't be passing in
// directories.
return findPackageRootsForFiles(execPaths);
@@ -454,8 +455,10 @@ public class ActionExecutionFunction implements SkyFunction, CompletionReceiver
}
private static void addDiscoveredInputs(
- Map<Artifact, FileArtifactValue> inputData, Iterable<Artifact> discoveredInputs,
- Environment env) {
+ Map<Artifact, FileArtifactValue> inputData,
+ Iterable<Artifact> discoveredInputs,
+ Environment env)
+ throws InterruptedException {
Set<SkyKey> keys = new HashSet<>();
for (Artifact artifact : discoveredInputs) {
if (!inputData.containsKey(artifact)) {
@@ -479,8 +482,8 @@ public class ActionExecutionFunction implements SkyFunction, CompletionReceiver
}
}
- private void establishSkyframeDependencies(Environment env, Action action)
- throws ActionExecutionException {
+ private static void establishSkyframeDependencies(Environment env, Action action)
+ throws ActionExecutionException, InterruptedException {
// Before we may safely establish Skyframe dependencies, we must build all action inputs by
// requesting their ArtifactValues.
// This is very important to do, because the establishSkyframeDependencies method may request
@@ -619,12 +622,12 @@ public class ActionExecutionFunction implements SkyFunction, CompletionReceiver
}
/**
- * Declares skyframe dependencies for any {@code action}'s inputs that are not already in
- * {@code knownInputs}. Returns the result of {@code env.getValues(...)} for these inputs,
- * which should contain {@link Artifact} keys and {@link FileArtifactValue} or null values.
+ * Declares skyframe dependencies for any {@code action}'s inputs that are not already in {@code
+ * knownInputs}. Returns the result of {@code env.getValues(...)} for these inputs, which should
+ * contain {@link Artifact} keys and {@link FileArtifactValue} or null values.
*/
- private static Map<SkyKey, SkyValue> declareAdditionalDependencies(Environment env,
- Action action, Set<Artifact> knownInputs) {
+ private static Map<SkyKey, SkyValue> declareAdditionalDependencies(
+ Environment env, Action action, Set<Artifact> knownInputs) throws InterruptedException {
Preconditions.checkState(action.discoversInputs(), action);
Iterable<Artifact> newArtifacts =
Iterables.filter(action.getInputs(), Predicates.not(Predicates.in(knownInputs)));
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunction.java
index 59572f1b9a..6a18db78dd 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunction.java
@@ -38,7 +38,7 @@ public class ActionTemplateExpansionFunction implements SkyFunction {
@Override
public SkyValue compute(SkyKey skyKey, Environment env)
- throws ActionTemplateExpansionFunctionException {
+ throws ActionTemplateExpansionFunctionException, InterruptedException {
ActionTemplateExpansionKey key = (ActionTemplateExpansionKey) skyKey.argument();
SpawnActionTemplate actionTemplate = key.getActionTemplate();
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactFunction.java
index f7007b7d59..cecc089d5b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactFunction.java
@@ -54,7 +54,8 @@ class ArtifactFunction implements SkyFunction {
}
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) throws ArtifactFunctionException {
+ public SkyValue compute(SkyKey skyKey, Environment env)
+ throws ArtifactFunctionException, InterruptedException {
OwnedArtifact ownedArtifact = (OwnedArtifact) skyKey.argument();
Artifact artifact = ownedArtifact.getArtifact();
if (artifact.isSourceArtifact()) {
@@ -116,9 +117,9 @@ class ArtifactFunction implements SkyFunction {
}
}
- private TreeArtifactValue createTreeArtifactValueFromActionTemplate(
+ private static TreeArtifactValue createTreeArtifactValueFromActionTemplate(
SpawnActionTemplate actionTemplate, Artifact treeArtifact, Environment env)
- throws ArtifactFunctionException {
+ throws ArtifactFunctionException, InterruptedException {
// Request the list of expanded actions from the ActionTemplate.
ActionTemplateExpansionValue expansionValue = (ActionTemplateExpansionValue) env.getValue(
ActionTemplateExpansionValue.key(actionTemplate));
@@ -167,7 +168,7 @@ class ArtifactFunction implements SkyFunction {
}
private FileArtifactValue createSourceValue(Artifact artifact, boolean mandatory, Environment env)
- throws MissingInputFileException {
+ throws MissingInputFileException, InterruptedException {
SkyKey fileSkyKey = FileValue.key(RootedPath.toRootedPath(artifact.getRoot().getPath(),
artifact.getPath()));
FileValue fileValue;
@@ -253,7 +254,8 @@ class ArtifactFunction implements SkyFunction {
Artifact artifact,
ActionAnalysisMetadata action,
FileArtifactValue value,
- SkyFunction.Environment env) {
+ SkyFunction.Environment env)
+ throws InterruptedException {
// This artifact aggregates other artifacts. Keep track of them so callers can find them.
ImmutableList.Builder<Pair<Artifact, FileArtifactValue>> inputs = ImmutableList.builder();
for (Map.Entry<SkyKey, SkyValue> entry :
@@ -286,8 +288,8 @@ class ArtifactFunction implements SkyFunction {
return Label.print(((OwnedArtifact) skyKey.argument()).getArtifact().getOwner());
}
- private ActionAnalysisMetadata extractActionFromArtifact(
- Artifact artifact, SkyFunction.Environment env) {
+ private static ActionAnalysisMetadata extractActionFromArtifact(
+ Artifact artifact, SkyFunction.Environment env) throws InterruptedException {
ArtifactOwner artifactOwner = artifact.getArtifactOwner();
Preconditions.checkState(artifactOwner instanceof ActionLookupKey, "", artifact, artifactOwner);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
index c1f8c335ec..d94be28632 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
@@ -57,7 +57,6 @@ import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import javax.annotation.Nullable;
/**
@@ -93,9 +92,9 @@ public final class AspectFunction implements SkyFunction {
* @return {@code null} if dependencies cannot be satisfied.
*/
@Nullable
- public static SkylarkAspect loadSkylarkAspect(
+ static SkylarkAspect loadSkylarkAspect(
Environment env, Label extensionLabel, String skylarkValueName)
- throws AspectCreationException {
+ throws AspectCreationException, InterruptedException {
SkyKey importFileKey = SkylarkImportLookupValue.key(extensionLabel, false);
try {
SkylarkImportLookupValue skylarkImportLookupValue =
@@ -275,8 +274,13 @@ public final class AspectFunction implements SkyFunction {
}
}
- private SkyValue createAliasAspect(Environment env, Target originalTarget, Label aliasLabel,
- Aspect aspect, AspectKey originalKey) {
+ private static SkyValue createAliasAspect(
+ Environment env,
+ Target originalTarget,
+ Label aliasLabel,
+ Aspect aspect,
+ AspectKey originalKey)
+ throws InterruptedException {
SkyKey depKey = AspectValue.key(aliasLabel,
originalKey.getAspectConfiguration(),
originalKey.getBaseConfiguration(),
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java
index a25c3ac201..3f18f8502b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java
@@ -29,7 +29,6 @@ import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
import com.google.devtools.build.skyframe.ValueOrException;
-
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
@@ -52,7 +51,8 @@ public class BuildConfigurationFunction implements SkyFunction {
}
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) throws SkyFunctionException {
+ public SkyValue compute(SkyKey skyKey, Environment env)
+ throws InterruptedException, BuildConfigurationFunctionException {
BuildConfigurationValue.Key key = (BuildConfigurationValue.Key) skyKey.argument();
Set<Fragment> fragments;
try {
@@ -83,7 +83,7 @@ public class BuildConfigurationFunction implements SkyFunction {
}
private Set<Fragment> getConfigurationFragments(BuildConfigurationValue.Key key, Environment env)
- throws InvalidConfigurationException {
+ throws InvalidConfigurationException, InterruptedException {
// Get SkyKeys for the fragments we need to load.
Set<SkyKey> fragmentKeys = new LinkedHashSet<>();
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java
index 5edaf985e4..7361c1f564 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java
@@ -26,7 +26,6 @@ import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import java.util.Map;
/**
@@ -46,7 +45,7 @@ public class BuildInfoCollectionFunction implements SkyFunction {
}
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) {
+ public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedException {
final BuildInfoKeyAndConfig keyAndConfig = (BuildInfoKeyAndConfig) skyKey.argument();
WorkspaceStatusValue infoArtifactValue =
(WorkspaceStatusValue) env.getValue(WorkspaceStatusValue.SKY_KEY);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/CollectPackagesUnderDirectoryFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/CollectPackagesUnderDirectoryFunction.java
index 21d4eb2336..cef2a10779 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/CollectPackagesUnderDirectoryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/CollectPackagesUnderDirectoryFunction.java
@@ -25,9 +25,7 @@ import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import java.util.Map;
-
import javax.annotation.Nullable;
/**
@@ -44,7 +42,7 @@ public class CollectPackagesUnderDirectoryFunction implements SkyFunction {
}
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) {
+ public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedException {
return new MyTraversalFunction().visitDirectory((RecursivePkgKey) skyKey.argument(), env);
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/CompletionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/CompletionFunction.java
index db9ab97534..6a3e6e45b7 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/CompletionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/CompletionFunction.java
@@ -46,15 +46,11 @@ import javax.annotation.Nullable;
public final class CompletionFunction<TValue extends SkyValue, TResult extends SkyValue>
implements SkyFunction {
- /**
- * A strategy for completing the build.
- */
- public interface Completor<TValue, TResult extends SkyValue> {
+ /** A strategy for completing the build. */
+ interface Completor<TValue, TResult extends SkyValue> {
- /**
- * Obtains an analysis result value from environment.
- */
- TValue getValueFromSkyKey(SkyKey skyKey, Environment env);
+ /** Obtains an analysis result value from environment. */
+ TValue getValueFromSkyKey(SkyKey skyKey, Environment env) throws InterruptedException;
/**
* Returns the options which determine the artifacts to build for the top-level targets.
@@ -104,7 +100,8 @@ public final class CompletionFunction<TValue extends SkyValue, TResult extends S
private static class TargetCompletor
implements Completor<ConfiguredTargetValue, TargetCompletionValue> {
@Override
- public ConfiguredTargetValue getValueFromSkyKey(SkyKey skyKey, Environment env) {
+ public ConfiguredTargetValue getValueFromSkyKey(SkyKey skyKey, Environment env)
+ throws InterruptedException {
TargetCompletionKey tcKey = (TargetCompletionKey) skyKey.argument();
LabelAndConfiguration lac = tcKey.labelAndConfiguration();
return (ConfiguredTargetValue)
@@ -162,7 +159,8 @@ public final class CompletionFunction<TValue extends SkyValue, TResult extends S
private static class AspectCompletor implements Completor<AspectValue, AspectCompletionValue> {
@Override
- public AspectValue getValueFromSkyKey(SkyKey skyKey, Environment env) {
+ public AspectValue getValueFromSkyKey(SkyKey skyKey, Environment env)
+ throws InterruptedException {
AspectCompletionKey acKey = (AspectCompletionKey) skyKey.argument();
AspectKey aspectKey = acKey.aspectKey();
return (AspectValue) env.getValue(AspectValue.key(aspectKey));
@@ -237,7 +235,8 @@ public final class CompletionFunction<TValue extends SkyValue, TResult extends S
@Nullable
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) throws CompletionFunctionException {
+ public SkyValue compute(SkyKey skyKey, Environment env)
+ throws CompletionFunctionException, InterruptedException {
TValue value = completor.getValueFromSkyKey(skyKey, env);
TopLevelArtifactContext topLevelContext = completor.getTopLevelArtifactContext(skyKey);
if (env.valuesMissing()) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationCollectionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationCollectionFunction.java
index d50e2a65d1..e73b2b4cd5 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationCollectionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationCollectionFunction.java
@@ -33,10 +33,8 @@ import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import java.util.ArrayList;
import java.util.List;
-
import javax.annotation.Nullable;
/**
@@ -75,10 +73,12 @@ public class ConfigurationCollectionFunction implements SkyFunction {
}
/** Create the build configurations with the given options. */
- private BuildConfigurationCollection getConfigurations(Environment env,
- PackageProviderForConfigurations loadedPackageProvider, BuildOptions buildOptions,
+ private BuildConfigurationCollection getConfigurations(
+ Environment env,
+ PackageProviderForConfigurations loadedPackageProvider,
+ BuildOptions buildOptions,
ImmutableSet<String> multiCpu)
- throws InvalidConfigurationException {
+ throws InvalidConfigurationException, InterruptedException {
// We cache all the related configurations for this target configuration in a cache that is
// dropped at the end of this method call. We instead rely on the cache for entire collections
// for caching the target and related configurations, and on a dedicated host configuration
@@ -115,11 +115,10 @@ public class ConfigurationCollectionFunction implements SkyFunction {
return new BuildConfigurationCollection(targetConfigurations, hostConfiguration);
}
- /**
- * Returns the host configuration, or null on missing Skyframe deps.
- */
- private BuildConfiguration getHostConfiguration(Environment env,
- BuildConfiguration targetConfiguration) throws InvalidConfigurationException {
+ /** Returns the host configuration, or null on missing Skyframe deps. */
+ private static BuildConfiguration getHostConfiguration(
+ Environment env, BuildConfiguration targetConfiguration)
+ throws InvalidConfigurationException, InterruptedException {
if (targetConfiguration.useDynamicConfigurations()) {
BuildOptions hostOptions = HostTransition.INSTANCE.apply(targetConfiguration.getOptions());
SkyKey hostConfigKey =
@@ -149,7 +148,9 @@ public class ConfigurationCollectionFunction implements SkyFunction {
Cache<String, BuildConfiguration> cache,
EventHandler originalEventListener,
PackageProviderForConfigurations loadedPackageProvider,
- BuildOptions buildOptions, String cpuOverride) throws InvalidConfigurationException {
+ BuildOptions buildOptions,
+ String cpuOverride)
+ throws InvalidConfigurationException, InterruptedException {
ErrorSensingEventHandler eventHandler = new ErrorSensingEventHandler(originalEventListener);
if (cpuOverride != null) {
// TODO(bazel-team): Options classes should be immutable. This is a bit of a hack.
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentFunction.java
index f2a12e7b34..62bee585b6 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentFunction.java
@@ -43,7 +43,6 @@ import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import java.io.IOException;
import java.util.HashSet;
import java.util.LinkedHashSet;
@@ -100,8 +99,11 @@ public final class ConfigurationFragmentFunction implements SkyFunction {
* those returned from {@link BuildOptions#getAllLabels()}, and the implicit ones are those that
* are returned from {@link Fragment#getImplicitLabels}.
*/
- private void sanityCheck(Fragment fragment, BuildOptions buildOptions,
- PackageProviderForConfigurations packageProvider) throws InvalidConfigurationException {
+ private static void sanityCheck(
+ Fragment fragment,
+ BuildOptions buildOptions,
+ PackageProviderForConfigurations packageProvider)
+ throws InvalidConfigurationException, InterruptedException {
if (fragment == null) {
return;
}
@@ -134,8 +136,9 @@ public final class ConfigurationFragmentFunction implements SkyFunction {
}
}
- private void collectAllTransitiveLabels(PackageProviderForConfigurations packageProvider,
- Set<Label> reachableLabels, Label from) throws NoSuchThingException {
+ private static void collectAllTransitiveLabels(
+ PackageProviderForConfigurations packageProvider, Set<Label> reachableLabels, Label from)
+ throws NoSuchThingException, InterruptedException {
if (!reachableLabels.add(from)) {
return;
}
@@ -189,12 +192,13 @@ public final class ConfigurationFragmentFunction implements SkyFunction {
}
@Override
- public Target getTarget(Label label) throws NoSuchPackageException, NoSuchTargetException {
+ public Target getTarget(Label label)
+ throws NoSuchPackageException, NoSuchTargetException, InterruptedException {
return packageProvider.getTarget(label);
}
@Override
- public Path getPath(Package pkg, String fileName) {
+ public Path getPath(Package pkg, String fileName) throws InterruptedException {
Path result = pkg.getPackageDirectory().getRelative(fileName);
try {
packageProvider.addDependency(pkg, fileName);
@@ -205,13 +209,13 @@ public final class ConfigurationFragmentFunction implements SkyFunction {
}
@Override
- public <T extends Fragment> T getFragment(BuildOptions buildOptions, Class<T> fragmentType)
- throws InvalidConfigurationException {
+ public <T extends Fragment> T getFragment(BuildOptions buildOptions, Class<T> fragmentType)
+ throws InvalidConfigurationException, InterruptedException {
return packageProvider.getFragment(buildOptions, fragmentType);
}
@Override
- public BlazeDirectories getBlazeDirectories() {
+ public BlazeDirectories getBlazeDirectories() throws InterruptedException {
return packageProvider.getDirectories();
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
index 9a82ef4d98..0bd188a4f0 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
@@ -75,7 +75,6 @@ import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
import com.google.devtools.build.skyframe.ValueOrException;
import com.google.devtools.build.skyframe.ValueOrException2;
-
import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedHashMap;
@@ -84,7 +83,6 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
import java.util.Set;
-
import javax.annotation.Nullable;
/**
@@ -416,15 +414,18 @@ final class ConfiguredTargetFunction implements SkyFunction {
* transitive closure.
*
* <p>This method is heavily performance-optimized. Because it, in aggregate, reads over every
- * edge in the configured target graph, small inefficiencies can have observable impact on
- * build analysis time. Keep this in mind when making modifications and performance-test any
- * changes you make.
+ * edge in the configured target graph, small inefficiencies can have observable impact on build
+ * analysis time. Keep this in mind when making modifications and performance-test any changes you
+ * make.
*/
@Nullable
- static OrderedSetMultimap<Attribute, Dependency> trimConfigurations(Environment env,
- TargetAndConfiguration ctgValue, OrderedSetMultimap<Attribute, Dependency> originalDeps,
- BuildConfiguration hostConfiguration, RuleClassProvider ruleClassProvider)
- throws DependencyEvaluationException {
+ static OrderedSetMultimap<Attribute, Dependency> trimConfigurations(
+ Environment env,
+ TargetAndConfiguration ctgValue,
+ OrderedSetMultimap<Attribute, Dependency> originalDeps,
+ BuildConfiguration hostConfiguration,
+ RuleClassProvider ruleClassProvider)
+ throws DependencyEvaluationException, InterruptedException {
// Maps each Skyframe-evaluated BuildConfiguration to the dependencies that need that
// configuration. For cases where Skyframe isn't needed to get the configuration (e.g. when
@@ -684,7 +685,7 @@ final class ConfiguredTargetFunction implements SkyFunction {
Map<SkyKey, ConfiguredTarget> configuredTargetMap,
Iterable<Dependency> deps,
NestedSetBuilder<Package> transitivePackages)
- throws AspectCreationException {
+ throws AspectCreationException, InterruptedException {
OrderedSetMultimap<SkyKey, ConfiguredAspect> result = OrderedSetMultimap.create();
Set<SkyKey> aspectKeys = new HashSet<>();
for (Dependency dep : deps) {
@@ -766,18 +767,21 @@ final class ConfiguredTargetFunction implements SkyFunction {
}
/**
- * Returns the set of {@link ConfigMatchingProvider}s that key the configurable attributes
- * used by this rule.
+ * Returns the set of {@link ConfigMatchingProvider}s that key the configurable attributes used by
+ * this rule.
*
- * <p>>If the configured targets supplying those providers aren't yet resolved by the
- * dependency resolver, returns null.
+ * <p>>If the configured targets supplying those providers aren't yet resolved by the dependency
+ * resolver, returns null.
*/
@Nullable
- static ImmutableMap<Label, ConfigMatchingProvider> getConfigConditions(Target target,
- Environment env, SkyframeDependencyResolver resolver, TargetAndConfiguration ctgValue,
+ static ImmutableMap<Label, ConfigMatchingProvider> getConfigConditions(
+ Target target,
+ Environment env,
+ SkyframeDependencyResolver resolver,
+ TargetAndConfiguration ctgValue,
NestedSetBuilder<Package> transitivePackages,
NestedSetBuilder<Label> transitiveLoadingRootCauses)
- throws DependencyEvaluationException {
+ throws DependencyEvaluationException, InterruptedException {
if (!(target instanceof Rule)) {
return NO_CONFIG_CONDITIONS;
}
@@ -847,15 +851,19 @@ final class ConfiguredTargetFunction implements SkyFunction {
return ImmutableMap.copyOf(configConditions);
}
- /***
- * Resolves the targets referenced in depValueNames and returns their ConfiguredTarget instances.
+ /**
+ * * Resolves the targets referenced in depValueNames and returns their ConfiguredTarget
+ * instances.
*
* <p>Returns null if not all instances are available yet.
*/
@Nullable
private static Map<SkyKey, ConfiguredTarget> resolveConfiguredTargetDependencies(
- Environment env, Collection<Dependency> deps, NestedSetBuilder<Package> transitivePackages,
- NestedSetBuilder<Label> transitiveLoadingRootCauses) throws DependencyEvaluationException {
+ Environment env,
+ Collection<Dependency> deps,
+ NestedSetBuilder<Package> transitivePackages,
+ NestedSetBuilder<Label> transitiveLoadingRootCauses)
+ throws DependencyEvaluationException, InterruptedException {
boolean missedValues = env.valuesMissing();
boolean failed = false;
Iterable<SkyKey> depKeys = Iterables.transform(deps, TO_KEYS);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunction.java
index 09debbff4a..68c9ff8353 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunction.java
@@ -18,7 +18,6 @@ import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import javax.annotation.Nullable;
/**
@@ -27,7 +26,7 @@ import javax.annotation.Nullable;
public class ContainingPackageLookupFunction implements SkyFunction {
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) {
+ public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedException {
PackageIdentifier dir = (PackageIdentifier) skyKey.argument();
PackageLookupValue pkgLookupValue =
(PackageLookupValue) env.getValue(PackageLookupValue.key(dir));
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/CoverageReportFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/CoverageReportFunction.java
index 53d7a86102..70de5cc212 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/CoverageReportFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/CoverageReportFunction.java
@@ -30,7 +30,7 @@ public class CoverageReportFunction implements SkyFunction {
CoverageReportFunction() {}
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) {
+ public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedException {
Preconditions.checkState(
CoverageReportValue.SKY_KEY.equals(skyKey), String.format(
"Expected %s for SkyKey but got %s instead", CoverageReportValue.SKY_KEY, skyKey));
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingFunction.java
index 3c1401c1d5..97ee8b78bc 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingFunction.java
@@ -18,7 +18,6 @@ import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import javax.annotation.Nullable;
/**
@@ -28,7 +27,7 @@ public final class DirectoryListingFunction implements SkyFunction {
@Override
public SkyValue compute(SkyKey skyKey, Environment env)
- throws DirectoryListingFunctionException {
+ throws DirectoryListingFunctionException, InterruptedException {
RootedPath dirRootedPath = (RootedPath) skyKey.argument();
FileValue dirFileValue = (FileValue) env.getValue(FileValue.key(dirRootedPath));
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingStateFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingStateFunction.java
index 0bb5249fcb..aa1fe760e2 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingStateFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingStateFunction.java
@@ -18,7 +18,6 @@ import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import java.io.IOException;
/**
@@ -37,7 +36,7 @@ public class DirectoryListingStateFunction implements SkyFunction {
@Override
public SkyValue compute(SkyKey skyKey, Environment env)
- throws DirectoryListingStateFunctionException {
+ throws DirectoryListingStateFunctionException, InterruptedException {
RootedPath dirRootedPath = (RootedPath) skyKey.argument();
try {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java b/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java
index 92888d2427..96a65b59c3 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java
@@ -36,7 +36,6 @@ import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.SkyFunction.Environment;
import com.google.devtools.build.skyframe.SkyKey;
-
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -56,7 +55,7 @@ public final class EnvironmentBackedRecursivePackageProvider implements Recursiv
@Override
public Package getPackage(EventHandler eventHandler, PackageIdentifier packageName)
- throws NoSuchPackageException, MissingDepException {
+ throws NoSuchPackageException, MissingDepException, InterruptedException {
SkyKey pkgKey = PackageValue.key(packageName);
PackageValue pkgValue =
(PackageValue) env.getValueOrThrow(pkgKey, NoSuchPackageException.class);
@@ -93,7 +92,7 @@ public final class EnvironmentBackedRecursivePackageProvider implements Recursiv
@Override
public boolean isPackage(EventHandler eventHandler, PackageIdentifier packageId)
- throws MissingDepException {
+ throws MissingDepException, InterruptedException {
SkyKey packageLookupKey = PackageLookupValue.key(packageId);
try {
PackageLookupValue packageLookupValue =
@@ -111,9 +110,10 @@ public final class EnvironmentBackedRecursivePackageProvider implements Recursiv
@Override
public Iterable<PathFragment> getPackagesUnderDirectory(
- RepositoryName repository, PathFragment directory,
+ RepositoryName repository,
+ PathFragment directory,
ImmutableSet<PathFragment> excludedSubdirectories)
- throws MissingDepException {
+ throws MissingDepException, InterruptedException {
PathPackageLocator packageLocator = PrecomputedValue.PATH_PACKAGE_LOCATOR.get(env);
if (packageLocator == null) {
throw new MissingDepException();
@@ -156,8 +156,9 @@ public final class EnvironmentBackedRecursivePackageProvider implements Recursiv
}
@Override
- public Target getTarget(EventHandler eventHandler, Label label) throws NoSuchPackageException,
- NoSuchTargetException, MissingDepException {
+ public Target getTarget(EventHandler eventHandler, Label label)
+ throws NoSuchPackageException, NoSuchTargetException, MissingDepException,
+ InterruptedException {
return getPackage(eventHandler, label.getPackageIdentifier()).getTarget(label.getName());
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java b/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java
index 792cc5fa13..b1b6259e90 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java
@@ -23,7 +23,6 @@ import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.SkyFunction;
-
import java.io.IOException;
import java.util.concurrent.atomic.AtomicReference;
@@ -82,12 +81,12 @@ public class ExternalFilesHelper {
* external repository). Such files are theoretically mutable, but certain Blaze flags may tell
* Blaze to assume these files are immutable.
*
- * Note that {@link ExternalFilesHelper#maybeHandleExternalFile} is only used for
- * {@link FileStateValue} and {@link DirectoryStateValue}, and also note that output files do
- * not normally have corresponding {@link FileValue} instances (and thus also
- * {@link FileStateValue} instances) in the Skyframe graph ({@link ArtifactFunction} only uses
- * {@link FileValue}s for source files). But {@link FileStateValue}s for output files can still
- * make their way into the Skyframe graph if e.g. a source file is a symlink to an output file.
+ * <p>Note that {@link ExternalFilesHelper#maybeHandleExternalFile} is only used for {@link
+ * FileStateValue} and {@link DirectoryListingStateValue}, and also note that output files do
+ * not normally have corresponding {@link FileValue} instances (and thus also {@link
+ * FileStateValue} instances) in the Skyframe graph ({@link ArtifactFunction} only uses {@link
+ * FileValue}s for source files). But {@link FileStateValue}s for output files can still make
+ * their way into the Skyframe graph if e.g. a source file is a symlink to an output file.
*/
// TODO(nharmata): Consider an alternative design where we have an OutputFileDiffAwareness. This
// could work but would first require that we clean up all RootedPath usage.
@@ -157,8 +156,8 @@ public class ExternalFilesHelper {
* ERROR_OUT, it will throw an error instead.
*/
@ThreadSafe
- public void maybeHandleExternalFile(RootedPath rootedPath, SkyFunction.Environment env)
- throws IOException {
+ void maybeHandleExternalFile(RootedPath rootedPath, SkyFunction.Environment env)
+ throws IOException, InterruptedException {
FileType fileType = getAndNoteFileType(rootedPath);
if (fileType == FileType.INTERNAL) {
return;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ExternalPackageFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ExternalPackageFunction.java
index 2e5cf268c1..8a7bdd92d9 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ExternalPackageFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ExternalPackageFunction.java
@@ -18,7 +18,6 @@ import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import javax.annotation.Nullable;
/**
@@ -31,7 +30,7 @@ public class ExternalPackageFunction implements SkyFunction {
@Nullable
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) {
+ public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedException {
RootedPath workspacePath = (RootedPath) skyKey.argument();
SkyKey key = WorkspaceFileValue.key(workspacePath);
WorkspaceFileValue value = (WorkspaceFileValue) env.getValue(key);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FileFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/FileFunction.java
index 6eb962114c..8404f53aa7 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/FileFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/FileFunction.java
@@ -28,12 +28,10 @@ import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyFunctionException.Transience;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import java.io.IOException;
import java.util.ArrayList;
import java.util.TreeSet;
import java.util.concurrent.atomic.AtomicReference;
-
import javax.annotation.Nullable;
/**
@@ -51,7 +49,8 @@ public class FileFunction implements SkyFunction {
}
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) throws FileFunctionException {
+ public SkyValue compute(SkyKey skyKey, Environment env)
+ throws FileFunctionException, InterruptedException {
RootedPath rootedPath = (RootedPath) skyKey.argument();
RootedPath realRootedPath = null;
FileStateValue realFileStateValue = null;
@@ -132,9 +131,9 @@ public class FileFunction implements SkyFunction {
* {@code null} if there was a missing dep.
*/
@Nullable
- private Pair<RootedPath, FileStateValue> resolveFromAncestors(
+ private static Pair<RootedPath, FileStateValue> resolveFromAncestors(
RootedPath rootedPath, Environment env)
- throws FileFunctionException, FileOutsidePackageRootsException {
+ throws FileFunctionException, FileOutsidePackageRootsException, InterruptedException {
PathFragment relativePath = rootedPath.getRelativePath();
RootedPath realRootedPath = rootedPath;
FileValue parentFileValue = null;
@@ -180,14 +179,17 @@ public class FileFunction implements SkyFunction {
}
/**
- * Returns the symlink target and file state of {@code rootedPath}'s symlink to
- * {@code symlinkTarget}, accounting for ancestor symlinks, or {@code null} if there was a
- * missing dep.
+ * Returns the symlink target and file state of {@code rootedPath}'s symlink to {@code
+ * symlinkTarget}, accounting for ancestor symlinks, or {@code null} if there was a missing dep.
*/
@Nullable
- private Pair<RootedPath, FileStateValue> getSymlinkTargetRootedPath(RootedPath rootedPath,
- PathFragment symlinkTarget, TreeSet<Path> orderedSeenPaths,
- Iterable<RootedPath> symlinkChain, Environment env) throws FileFunctionException {
+ private Pair<RootedPath, FileStateValue> getSymlinkTargetRootedPath(
+ RootedPath rootedPath,
+ PathFragment symlinkTarget,
+ TreeSet<Path> orderedSeenPaths,
+ Iterable<RootedPath> symlinkChain,
+ Environment env)
+ throws FileFunctionException, InterruptedException {
RootedPath symlinkTargetRootedPath;
if (symlinkTarget.isAbsolute()) {
Path path = rootedPath.asPath().getFileSystem().getRootDirectory().getRelative(
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FileStateFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/FileStateFunction.java
index d77f7e3fc3..f2dfff824c 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/FileStateFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/FileStateFunction.java
@@ -19,7 +19,6 @@ import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import java.io.IOException;
import java.util.concurrent.atomic.AtomicReference;
@@ -41,7 +40,8 @@ public class FileStateFunction implements SkyFunction {
}
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) throws FileStateFunctionException {
+ public SkyValue compute(SkyKey skyKey, Environment env)
+ throws FileStateFunctionException, InterruptedException {
RootedPath rootedPath = (RootedPath) skyKey.argument();
try {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunction.java
index 777794654f..f95274c648 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunction.java
@@ -49,7 +49,8 @@ public final class FilesetEntryFunction implements SkyFunction {
}
@Override
- public SkyValue compute(SkyKey key, Environment env) throws FilesetEntryFunctionException {
+ public SkyValue compute(SkyKey key, Environment env)
+ throws FilesetEntryFunctionException, InterruptedException {
FilesetTraversalParams t = (FilesetTraversalParams) key.argument();
Preconditions.checkState(
t.getNestedTraversal().isPresent() != t.getDirectTraversal().isPresent(),
@@ -226,8 +227,9 @@ public final class FilesetEntryFunction implements SkyFunction {
return null;
}
- private RecursiveFilesystemTraversalValue traverse(Environment env, String errorInfo,
- DirectTraversal traversal) throws MissingDepException {
+ private static RecursiveFilesystemTraversalValue traverse(
+ Environment env, String errorInfo, DirectTraversal traversal)
+ throws MissingDepException, InterruptedException {
SkyKey depKey = RecursiveFilesystemTraversalValue.key(
new RecursiveFilesystemTraversalValue.TraversalRequest(traversal.getRoot().asRootedPath(),
traversal.isGenerated(), traversal.getPackageBoundaryMode(), traversal.isPackage(),
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java b/src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java
index 6f78572939..4b9263e0e6 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java
@@ -45,7 +45,6 @@ import com.google.devtools.build.skyframe.SkyFunctionName;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
import com.google.devtools.build.skyframe.WalkableGraph;
-
import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
@@ -62,7 +61,6 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
-
import javax.annotation.Nullable;
/**
@@ -123,9 +121,9 @@ public class FilesystemValueChecker {
dirtinessChecker, /*checkMissingValues=*/true);
}
- private static interface ValueFetcher {
+ private interface ValueFetcher {
@Nullable
- SkyValue get(SkyKey key);
+ SkyValue get(SkyKey key) throws InterruptedException;
}
private static class WalkableGraphBackedValueFetcher implements ValueFetcher {
@@ -137,7 +135,7 @@ public class FilesystemValueChecker {
@Override
@Nullable
- public SkyValue get(SkyKey key) {
+ public SkyValue get(SkyKey key) throws InterruptedException {
return walkableGraph.exists(key) ? walkableGraph.getValue(key) : null;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/GlobFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/GlobFunction.java
index 06518314e8..ec3f7138bf 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/GlobFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/GlobFunction.java
@@ -31,10 +31,8 @@ import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyFunctionException.Transience;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import java.util.Map;
import java.util.regex.Pattern;
-
import javax.annotation.Nullable;
/**
@@ -54,7 +52,8 @@ public final class GlobFunction implements SkyFunction {
}
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) throws GlobFunctionException {
+ public SkyValue compute(SkyKey skyKey, Environment env)
+ throws GlobFunctionException, InterruptedException {
GlobDescriptor glob = (GlobDescriptor) skyKey.argument();
// Note that the glob's package is assumed to exist which implies that the package's BUILD file
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java b/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java
index 26e5f1bbb3..5499189c9b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java
@@ -47,7 +47,6 @@ import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
import com.google.devtools.build.skyframe.WalkableGraph;
-
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -79,7 +78,7 @@ public final class GraphBackedRecursivePackageProvider implements RecursivePacka
@Override
public Package getPackage(EventHandler eventHandler, PackageIdentifier packageName)
- throws NoSuchPackageException {
+ throws NoSuchPackageException, InterruptedException {
SkyKey pkgKey = PackageValue.key(packageName);
PackageValue pkgValue;
@@ -98,8 +97,9 @@ public final class GraphBackedRecursivePackageProvider implements RecursivePacka
}
@Override
- public Map<PackageIdentifier, Package> bulkGetPackages(EventHandler eventHandler,
- Iterable<PackageIdentifier> pkgIds) throws NoSuchPackageException {
+ public Map<PackageIdentifier, Package> bulkGetPackages(
+ EventHandler eventHandler, Iterable<PackageIdentifier> pkgIds)
+ throws NoSuchPackageException, InterruptedException {
Set<SkyKey> pkgKeys = ImmutableSet.copyOf(PackageValue.keys(pkgIds));
ImmutableMap.Builder<PackageIdentifier, Package> pkgResults = ImmutableMap.builder();
@@ -133,7 +133,8 @@ public final class GraphBackedRecursivePackageProvider implements RecursivePacka
@Override
- public boolean isPackage(EventHandler eventHandler, PackageIdentifier packageName) {
+ public boolean isPackage(EventHandler eventHandler, PackageIdentifier packageName)
+ throws InterruptedException {
SkyKey packageLookupKey = PackageLookupValue.key(packageName);
if (!graph.exists(packageLookupKey)) {
// If the package lookup key does not exist in the graph, then it must not correspond to any
@@ -158,8 +159,10 @@ public final class GraphBackedRecursivePackageProvider implements RecursivePacka
@Override
public Iterable<PathFragment> getPackagesUnderDirectory(
- RepositoryName repository, PathFragment directory,
- ImmutableSet<PathFragment> excludedSubdirectories) {
+ RepositoryName repository,
+ PathFragment directory,
+ ImmutableSet<PathFragment> excludedSubdirectories)
+ throws InterruptedException {
PathFragment.checkAllPathsAreUnder(excludedSubdirectories, directory);
// Check that this package is covered by at least one of our universe patterns.
@@ -208,7 +211,8 @@ public final class GraphBackedRecursivePackageProvider implements RecursivePacka
private void collectPackagesUnder(
final RepositoryName repository,
Set<TraversalInfo> traversals,
- ImmutableList.Builder<PathFragment> builder) {
+ ImmutableList.Builder<PathFragment> builder)
+ throws InterruptedException {
Map<TraversalInfo, SkyKey> traversalToKeyMap =
Maps.asMap(
traversals,
@@ -256,7 +260,7 @@ public final class GraphBackedRecursivePackageProvider implements RecursivePacka
@Override
public Target getTarget(EventHandler eventHandler, Label label)
- throws NoSuchPackageException, NoSuchTargetException {
+ throws NoSuchPackageException, NoSuchTargetException, InterruptedException {
return getPackage(eventHandler, label.getPackageIdentifier()).getTarget(label.getName());
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageErrorFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageErrorFunction.java
index b277321342..17ba9bee28 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageErrorFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageErrorFunction.java
@@ -24,7 +24,6 @@ import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyFunctionException.Transience;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import javax.annotation.Nullable;
/**
@@ -44,7 +43,8 @@ public class PackageErrorFunction implements SkyFunction {
@Nullable
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) throws PackageErrorFunctionException {
+ public SkyValue compute(SkyKey skyKey, Environment env)
+ throws PackageErrorFunctionException, InterruptedException {
PackageIdentifier packageIdentifier = (PackageIdentifier) skyKey.argument();
try {
SkyKey packageKey = PackageValue.key(packageIdentifier);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
index 186232aeff..54edcf52e0 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
@@ -172,17 +172,19 @@ public class PackageFunction implements SkyFunction {
}
/**
- * Marks the given dependencies, and returns those already present. Ignores any exception
- * thrown while building the dependency, except for filesystem inconsistencies.
+ * Marks the given dependencies, and returns those already present. Ignores any exception thrown
+ * while building the dependency, except for filesystem inconsistencies.
*
* <p>We need to mark dependencies implicitly used by the legacy package loading code, but we
* don't care about any skyframe errors since the package knows whether it's in error or not.
*/
private static Pair<? extends Map<PathFragment, PackageLookupValue>, Boolean>
- getPackageLookupDepsAndPropagateInconsistentFilesystemExceptions(
- PackageIdentifier packageIdentifier,
- Iterable<SkyKey> depKeys, Environment env, boolean packageWasInError)
- throws InternalInconsistentFilesystemException {
+ getPackageLookupDepsAndPropagateInconsistentFilesystemExceptions(
+ PackageIdentifier packageIdentifier,
+ Iterable<SkyKey> depKeys,
+ Environment env,
+ boolean packageWasInError)
+ throws InternalInconsistentFilesystemException, InterruptedException {
Preconditions.checkState(
Iterables.all(depKeys, SkyFunctions.isSkyFunction(SkyFunctions.PACKAGE_LOOKUP)), depKeys);
boolean packageShouldBeInError = packageWasInError;
@@ -216,7 +218,7 @@ public class PackageFunction implements SkyFunction {
Environment env,
boolean packageWasInError)
throws InternalInconsistentFilesystemException, FileOutsidePackageRootsException,
- SymlinkOutsidePackageRootsException {
+ SymlinkOutsidePackageRootsException, InterruptedException {
Preconditions.checkState(
Iterables.all(depKeys, SkyFunctions.isSkyFunction(SkyFunctions.FILE)), depKeys);
boolean packageShouldBeInError = packageWasInError;
@@ -249,7 +251,7 @@ public class PackageFunction implements SkyFunction {
Environment env,
boolean packageWasInError)
throws InternalInconsistentFilesystemException, FileOutsidePackageRootsException,
- SymlinkOutsidePackageRootsException {
+ SymlinkOutsidePackageRootsException, InterruptedException {
Preconditions.checkState(
Iterables.all(depKeys, SkyFunctions.isSkyFunction(SkyFunctions.GLOB)), depKeys);
boolean packageShouldBeInError = packageWasInError;
@@ -289,7 +291,7 @@ public class PackageFunction implements SkyFunction {
PackageIdentifier packageIdentifier,
boolean containsErrors)
throws InternalInconsistentFilesystemException, FileOutsidePackageRootsException,
- SymlinkOutsidePackageRootsException {
+ SymlinkOutsidePackageRootsException, InterruptedException {
boolean packageShouldBeInError = containsErrors;
// TODO(bazel-team): This means that many packages will have to be preprocessed twice. Ouch!
@@ -368,11 +370,12 @@ public class PackageFunction implements SkyFunction {
/**
* Adds a dependency on the WORKSPACE file, representing it as a special type of package.
+ *
* @throws PackageFunctionException if there is an error computing the workspace file or adding
- * its rules to the //external package.
+ * its rules to the //external package.
*/
private SkyValue getExternalPackage(Environment env, Path packageLookupPath)
- throws PackageFunctionException {
+ throws PackageFunctionException, InterruptedException {
RootedPath workspacePath = RootedPath.toRootedPath(
packageLookupPath, Label.EXTERNAL_PACKAGE_FILE_NAME);
SkyKey workspaceKey = ExternalPackageFunction.key(workspacePath);
@@ -567,7 +570,8 @@ public class PackageFunction implements SkyFunction {
return new PackageValue(pkg);
}
- private FileValue getBuildFileValue(Environment env, RootedPath buildFileRootedPath) {
+ private static FileValue getBuildFileValue(Environment env, RootedPath buildFileRootedPath)
+ throws InterruptedException {
FileValue buildFileValue;
try {
buildFileValue = (FileValue) env.getValueOrThrow(FileValue.key(buildFileRootedPath),
@@ -747,7 +751,7 @@ public class PackageFunction implements SkyFunction {
private static void handleLabelsCrossingSubpackagesAndPropagateInconsistentFilesystemExceptions(
Path pkgRoot, PackageIdentifier pkgId, Package.Builder pkgBuilder, Environment env)
- throws InternalInconsistentFilesystemException {
+ throws InternalInconsistentFilesystemException, InterruptedException {
Set<SkyKey> containingPkgLookupKeys = Sets.newHashSet();
Map<Target, SkyKey> targetToKey = new HashMap<>();
for (Target target : pkgBuilder.getTargets()) {
@@ -921,7 +925,7 @@ public class PackageFunction implements SkyFunction {
@Override
public Token runAsync(List<String> includes, List<String> excludes, boolean excludeDirs)
- throws BadGlobException {
+ throws BadGlobException, InterruptedException {
List<SkyKey> globKeys = new ArrayList<>(includes.size() + excludes.size());
LinkedHashSet<SkyKey> includesKeys = Sets.newLinkedHashSetWithExpectedSize(includes.size());
LinkedHashSet<SkyKey> excludesKeys = Sets.newLinkedHashSetWithExpectedSize(excludes.size());
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java
index 638f2eee8d..6e425e8dd7 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java
@@ -47,7 +47,8 @@ public class PackageLookupFunction implements SkyFunction {
}
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) throws PackageLookupFunctionException {
+ public SkyValue compute(SkyKey skyKey, Environment env)
+ throws PackageLookupFunctionException, InterruptedException {
PathPackageLocator pkgLocator = PrecomputedValue.PATH_PACKAGE_LOCATOR.get(env);
PackageIdentifier packageKey = (PackageIdentifier) skyKey.argument();
if (PackageFunction.isDefaultsPackage(packageKey)) {
@@ -94,9 +95,9 @@ public class PackageLookupFunction implements SkyFunction {
}
@Nullable
- private FileValue getFileValue(
+ private static FileValue getFileValue(
RootedPath fileRootedPath, Environment env, PackageIdentifier packageIdentifier)
- throws PackageLookupFunctionException {
+ throws PackageLookupFunctionException, InterruptedException {
String basename = fileRootedPath.asPath().getBaseName();
SkyKey fileSkyKey = FileValue.key(fileRootedPath);
FileValue fileValue = null;
@@ -122,12 +123,12 @@ public class PackageLookupFunction implements SkyFunction {
return fileValue;
}
- private PackageLookupValue getPackageLookupValue(
+ private static PackageLookupValue getPackageLookupValue(
Environment env,
ImmutableList<Path> packagePathEntries,
PackageIdentifier packageIdentifier,
BuildFileName buildFileName)
- throws PackageLookupFunctionException {
+ throws PackageLookupFunctionException, InterruptedException {
// TODO(bazel-team): The following is O(n^2) on the number of elements on the package path due
// to having restart the SkyFunction after every new dependency. However, if we try to batch
// the missing value keys, more dependencies than necessary will be declared. This wart can be
@@ -147,9 +148,9 @@ public class PackageLookupFunction implements SkyFunction {
return PackageLookupValue.NO_BUILD_FILE_VALUE;
}
- private PackageLookupValue computeWorkspacePackageLookupValue(
+ private static PackageLookupValue computeWorkspacePackageLookupValue(
Environment env, ImmutableList<Path> packagePathEntries)
- throws PackageLookupFunctionException {
+ throws PackageLookupFunctionException, InterruptedException {
PackageLookupValue result =
getPackageLookupValue(
env, packagePathEntries, Label.EXTERNAL_PACKAGE_IDENTIFIER, BuildFileName.WORKSPACE);
@@ -182,11 +183,11 @@ public class PackageLookupFunction implements SkyFunction {
* Gets a PackageLookupValue from a different Bazel repository.
*
* <p>To do this, it looks up the "external" package and finds a path mapping for the repository
- * name.</p>
+ * name.
*/
- private PackageLookupValue computeExternalPackageLookupValue(
+ private static PackageLookupValue computeExternalPackageLookupValue(
SkyKey skyKey, Environment env, PackageIdentifier packageIdentifier)
- throws PackageLookupFunctionException {
+ throws PackageLookupFunctionException, InterruptedException {
PackageIdentifier id = (PackageIdentifier) skyKey.argument();
SkyKey repositoryKey = RepositoryValue.key(id.getRepository());
RepositoryValue repositoryValue;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java
index e221ae7be1..08eecd7828 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java
@@ -38,12 +38,10 @@ import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
-
import javax.annotation.Nullable;
/**
@@ -134,8 +132,8 @@ public class PostConfiguredTargetFunction implements SkyFunction {
* target, or null if not all dependencies have yet been SkyFrame-evaluated.
*/
@Nullable
- private ImmutableMap<Label, ConfigMatchingProvider> getConfigurableAttributeConditions(
- TargetAndConfiguration ctg, Environment env) {
+ private static ImmutableMap<Label, ConfigMatchingProvider> getConfigurableAttributeConditions(
+ TargetAndConfiguration ctg, Environment env) throws InterruptedException {
if (!(ctg.getTarget() instanceof Rule)) {
return ImmutableMap.of();
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java
index a5f7a6793d..bc9977e4c9 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java
@@ -32,10 +32,8 @@ import com.google.devtools.build.skyframe.Injectable;
import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import java.util.Map;
import java.util.UUID;
-
import javax.annotation.Nullable;
/**
@@ -138,7 +136,7 @@ public final class PrecomputedValue implements SkyValue {
return "<BuildVariable " + value + ">";
}
- public static final void dependOnBuildId(SkyFunction.Environment env) {
+ public static void dependOnBuildId(SkyFunction.Environment env) throws InterruptedException {
BUILD_ID.get(env);
}
@@ -166,7 +164,7 @@ public final class PrecomputedValue implements SkyValue {
*/
@Nullable
@SuppressWarnings("unchecked")
- public T get(SkyFunction.Environment env) {
+ public T get(SkyFunction.Environment env) throws InterruptedException {
PrecomputedValue value = (PrecomputedValue) env.getValue(key);
if (value == null) {
return null;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java
index 7524bee1c0..fc9cd81c55 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java
@@ -44,11 +44,9 @@ import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
-
import javax.annotation.Nullable;
/**
@@ -177,16 +175,17 @@ public class PrepareDepsOfPatternFunction implements SkyFunction {
}
@Override
- public ResolvedTargets<Void> getTargetsInPackage(String originalPattern,
- PackageIdentifier packageIdentifier, boolean rulesOnly) throws TargetParsingException {
+ public ResolvedTargets<Void> getTargetsInPackage(
+ String originalPattern, PackageIdentifier packageIdentifier, boolean rulesOnly)
+ throws TargetParsingException, InterruptedException {
FilteringPolicy policy =
rulesOnly ? FilteringPolicies.RULES_ONLY : FilteringPolicies.NO_FILTER;
return getTargetsInPackage(originalPattern, packageIdentifier, policy);
}
- private ResolvedTargets<Void> getTargetsInPackage(String originalPattern,
- PackageIdentifier packageIdentifier, FilteringPolicy policy)
- throws TargetParsingException {
+ private ResolvedTargets<Void> getTargetsInPackage(
+ String originalPattern, PackageIdentifier packageIdentifier, FilteringPolicy policy)
+ throws TargetParsingException, InterruptedException {
try {
Package pkg = packageProvider.getPackage(env.getListener(), packageIdentifier);
ResolvedTargets<Target> packageTargets =
@@ -209,7 +208,7 @@ public class PrepareDepsOfPatternFunction implements SkyFunction {
}
@Override
- public boolean isPackage(PackageIdentifier packageIdentifier) {
+ public boolean isPackage(PackageIdentifier packageIdentifier) throws InterruptedException {
return packageProvider.isPackage(env.getListener(), packageIdentifier);
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java
index b5b560a2c8..568b623c6e 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java
@@ -32,9 +32,7 @@ import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import java.util.Map;
-
import javax.annotation.Nullable;
/**
@@ -50,7 +48,7 @@ public class PrepareDepsOfTargetsUnderDirectoryFunction implements SkyFunction {
}
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) {
+ public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedException {
PrepareDepsOfTargetsUnderDirectoryKey argument =
(PrepareDepsOfTargetsUnderDirectoryKey) skyKey.argument();
FilteringPolicy filteringPolicy = argument.getFilteringPolicy();
@@ -102,13 +100,13 @@ public class PrepareDepsOfTargetsUnderDirectoryFunction implements SkyFunction {
}
@Override
- public void visitPackageValue(Package pkg, Environment env) {
+ public void visitPackageValue(Package pkg, Environment env) throws InterruptedException {
loadTransitiveTargets(env, pkg, filteringPolicy);
}
}
private static void loadTransitiveTargets(
- Environment env, Package pkg, FilteringPolicy filteringPolicy) {
+ Environment env, Package pkg, FilteringPolicy filteringPolicy) throws InterruptedException {
ResolvedTargets<Target> packageTargets =
TargetPatternResolverUtil.resolvePackageTargets(pkg, filteringPolicy);
ImmutableList.Builder<SkyKey> builder = ImmutableList.builder();
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveDirectoryTraversalFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveDirectoryTraversalFunction.java
index 24696d04f9..4c66e8fe47 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveDirectoryTraversalFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveDirectoryTraversalFunction.java
@@ -39,7 +39,6 @@ import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
import com.google.devtools.build.skyframe.ValueOrException;
import com.google.devtools.build.skyframe.ValueOrException4;
-
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -105,25 +104,26 @@ abstract class RecursiveDirectoryTraversalFunction
interface Visitor {
/**
- * Called iff the directory contains a package. Provides an {@link Environment} {@code env}
- * so that the visitor may do additional lookups. {@link Environment#valuesMissing} will be
- * checked afterwards.
+ * Called iff the directory contains a package. Provides an {@link Environment} {@code env} so
+ * that the visitor may do additional lookups. {@link Environment#valuesMissing} will be checked
+ * afterwards.
*/
- void visitPackageValue(Package pkg, Environment env);
+ void visitPackageValue(Package pkg, Environment env) throws InterruptedException;
}
/**
- * Looks in the directory specified by {@code recursivePkgKey} for a package, does some work
- * as specified by {@link Visitor} if such a package exists, then recursively does work in each
+ * Looks in the directory specified by {@code recursivePkgKey} for a package, does some work as
+ * specified by {@link Visitor} if such a package exists, then recursively does work in each
* non-excluded subdirectory as specified by {@link #getSkyKeyForSubdirectory}, and finally
- * aggregates the {@link Visitor} value along with values from each subdirectory as specified
- * by {@link #aggregateWithSubdirectorySkyValues}, and returns that aggregation.
+ * aggregates the {@link Visitor} value along with values from each subdirectory as specified by
+ * {@link #aggregateWithSubdirectorySkyValues}, and returns that aggregation.
*
* <p>Returns null if {@code env.valuesMissing()} is true, checked after each call to one of
* {@link RecursiveDirectoryTraversalFunction}'s abstract methods that were given {@code env}.
* (And after each of {@code visitDirectory}'s own uses of {@code env}, of course.)
*/
- TReturn visitDirectory(RecursivePkgKey recursivePkgKey, Environment env) {
+ TReturn visitDirectory(RecursivePkgKey recursivePkgKey, Environment env)
+ throws InterruptedException {
RootedPath rootedPath = recursivePkgKey.getRootedPath();
ImmutableSet<PathFragment> excludedPaths = recursivePkgKey.getExcludedPaths();
Path root = rootedPath.getRoot();
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunction.java
index b7f7b921d6..e122307ee7 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunction.java
@@ -31,12 +31,10 @@ import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
-
import javax.annotation.Nullable;
/** A {@link SkyFunction} to build {@link RecursiveFilesystemTraversalValue}s. */
@@ -109,7 +107,7 @@ public final class RecursiveFilesystemTraversalFunction implements SkyFunction {
@Override
public SkyValue compute(SkyKey skyKey, Environment env)
- throws RecursiveFilesystemTraversalFunctionException {
+ throws RecursiveFilesystemTraversalFunctionException, InterruptedException {
TraversalRequest traversal = (TraversalRequest) skyKey.argument();
try {
// Stat the traversal root.
@@ -204,7 +202,7 @@ public final class RecursiveFilesystemTraversalFunction implements SkyFunction {
}
private static FileInfo lookUpFileInfo(Environment env, TraversalRequest traversal)
- throws MissingDepException {
+ throws MissingDepException, InterruptedException {
// Stat the file.
FileValue fileValue = (FileValue) getDependentSkyValue(env, FileValue.key(traversal.path));
if (fileValue.exists()) {
@@ -279,8 +277,9 @@ public final class RecursiveFilesystemTraversalFunction implements SkyFunction {
* {@link FileInfo} so the caller should use these instead of the old ones (this happens when
* a package is found, but under a different root than expected)
*/
- private static PkgLookupResult checkIfPackage(Environment env, TraversalRequest traversal,
- FileInfo rootInfo) throws MissingDepException {
+ private static PkgLookupResult checkIfPackage(
+ Environment env, TraversalRequest traversal, FileInfo rootInfo)
+ throws MissingDepException, InterruptedException {
Preconditions.checkArgument(rootInfo.type.exists() && !rootInfo.type.isFile(),
"{%s} {%s}", traversal, rootInfo);
PackageLookupValue pkgLookup = (PackageLookupValue) getDependentSkyValue(env,
@@ -315,8 +314,9 @@ public final class RecursiveFilesystemTraversalFunction implements SkyFunction {
*
* <p>The returned keys are of type {@link SkyFunctions#RECURSIVE_FILESYSTEM_TRAVERSAL}.
*/
- private static Collection<SkyKey> createRecursiveTraversalKeys(Environment env,
- TraversalRequest traversal) throws MissingDepException {
+ private static Collection<SkyKey> createRecursiveTraversalKeys(
+ Environment env, TraversalRequest traversal)
+ throws MissingDepException, InterruptedException {
// Use the traversal's path, even if it's a symlink. The contents of the directory, as listed
// in the result, must be relative to it.
DirectoryListingValue dirListing = (DirectoryListingValue) getDependentSkyValue(env,
@@ -405,7 +405,7 @@ public final class RecursiveFilesystemTraversalFunction implements SkyFunction {
}
private static SkyValue getDependentSkyValue(Environment env, SkyKey key)
- throws MissingDepException {
+ throws MissingDepException, InterruptedException {
SkyValue value = env.getValue(key);
if (env.valuesMissing()) {
throw new MissingDepException();
@@ -419,8 +419,7 @@ public final class RecursiveFilesystemTraversalFunction implements SkyFunction {
* <p>The keys must all be {@link SkyFunctions#RECURSIVE_FILESYSTEM_TRAVERSAL} keys.
*/
private static Collection<RecursiveFilesystemTraversalValue> traverseChildren(
- Environment env, Iterable<SkyKey> keys)
- throws MissingDepException {
+ Environment env, Iterable<SkyKey> keys) throws MissingDepException, InterruptedException {
Map<SkyKey, SkyValue> values = env.getValues(keys);
if (env.valuesMissing()) {
throw new MissingDepException();
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 642d8eae36..a01a1f4f33 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
@@ -44,7 +44,6 @@ import com.google.devtools.build.lib.pkgcache.RecursivePackageProvider;
import com.google.devtools.build.lib.pkgcache.TargetPatternResolverUtil;
import com.google.devtools.build.lib.util.BatchCallback;
import com.google.devtools.build.lib.vfs.PathFragment;
-
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -171,7 +170,7 @@ public class RecursivePackageProviderBackedTargetPatternResolver
}
@Override
- public boolean isPackage(PackageIdentifier packageIdentifier) {
+ public boolean isPackage(PackageIdentifier packageIdentifier) throws InterruptedException {
return recursivePackageProvider.isPackage(eventHandler, packageIdentifier);
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java
index 607e9b2c4e..9b97b4be19 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java
@@ -27,9 +27,7 @@ import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import java.util.Map;
-
import javax.annotation.Nullable;
/**
@@ -48,7 +46,7 @@ public class RecursivePkgFunction implements SkyFunction {
/** N.B.: May silently throw {@link NoSuchPackageException} in nokeep_going mode! */
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) {
+ public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedException {
return new MyTraversalFunction().visitDirectory((RecursivePkgKey) skyKey.argument(), env);
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java
index b5c0863d98..11d66001db 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java
@@ -74,7 +74,6 @@ import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.lib.vfs.Symlinks;
import com.google.devtools.build.skyframe.SkyFunction.Environment;
import com.google.protobuf.ByteString;
-
import java.io.IOException;
import java.util.Collection;
import java.util.HashSet;
@@ -92,7 +91,6 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;
import java.util.concurrent.atomic.AtomicReference;
-
import javax.annotation.Nullable;
/**
@@ -503,7 +501,7 @@ public final class SkyframeActionExecutor implements ActionExecutionContextFacto
@Nullable
Iterable<Artifact> getActionCachedInputs(Action action, PackageRootResolver resolver)
- throws PackageRootResolutionException {
+ throws PackageRootResolutionException, InterruptedException {
return actionCacheChecker.getCachedInputs(action, resolver);
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeAwareAction.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeAwareAction.java
index 6c2caf1128..43c0193d0e 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeAwareAction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeAwareAction.java
@@ -40,7 +40,7 @@ import com.google.devtools.build.skyframe.SkyFunction.Environment;
public interface SkyframeAwareAction {
/** Wrapper and/or base class for exceptions raised in {@link #establishSkyframeDependencies}. */
- public static class ExceptionBase extends Exception {
+ class ExceptionBase extends Exception {
public ExceptionBase(String message) {
super(message);
}
@@ -53,11 +53,11 @@ public interface SkyframeAwareAction {
/**
* Establish dependencies on Skyframe values before executing the action.
*
- * <p><b>IMPORTANT</b>: actions that implement this interface should override
- * {@code Action.executeUnconditionally} and return true. See {@link SkyframeAwareAction} why.
+ * <p><b>IMPORTANT</b>: actions that implement this interface should override {@code
+ * Action.executeUnconditionally} and return true. See {@link SkyframeAwareAction} why.
*
- * <p>This method should perform as little computation as possible: ideally it should request
- * one or a few SkyValues, perhaps set some state somewhere and return. If this method needs to
+ * <p>This method should perform as little computation as possible: ideally it should request one
+ * or a few SkyValues, perhaps set some state somewhere and return. If this method needs to
* perform anything more complicated than that, including perhaps some non-trivial computation,
* you should implement that as a SkyFunction and request the corresponding SkyValue in this
* method.
@@ -69,5 +69,5 @@ public interface SkyframeAwareAction {
* exceptions); that is the responsibility of the caller. It should return as soon as possible,
* ready to be called again at a later time if need be.
*/
- void establishSkyframeDependencies(Environment env) throws ExceptionBase;
+ void establishSkyframeDependencies(Environment env) throws ExceptionBase, InterruptedException;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
index 546a0e2575..2d80c522f5 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
@@ -73,13 +73,11 @@ import com.google.devtools.build.skyframe.EvaluationResult;
import com.google.devtools.build.skyframe.SkyFunction.Environment;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Logger;
-
import javax.annotation.Nullable;
/**
@@ -430,7 +428,8 @@ public final class SkyframeBuildView {
*/
// TODO(bazel-team): Allow analysis to return null so the value builder can exit and wait for a
// restart deps are not present.
- private boolean getWorkspaceStatusValues(Environment env, BuildConfiguration config) {
+ private static boolean getWorkspaceStatusValues(Environment env, BuildConfiguration config)
+ throws InterruptedException {
env.getValue(WorkspaceStatusValue.SKY_KEY);
Map<BuildInfoKey, BuildInfoFactory> buildInfoFactories =
PrecomputedValue.BUILD_INFO_FACTORIES.get(env);
@@ -451,9 +450,13 @@ public final class SkyframeBuildView {
/** Returns null if any build-info values are not ready. */
@Nullable
- CachingAnalysisEnvironment createAnalysisEnvironment(ArtifactOwner owner,
- boolean isSystemEnv, EventHandler eventHandler,
- Environment env, BuildConfiguration config) {
+ CachingAnalysisEnvironment createAnalysisEnvironment(
+ ArtifactOwner owner,
+ boolean isSystemEnv,
+ EventHandler eventHandler,
+ Environment env,
+ BuildConfiguration config)
+ throws InterruptedException {
if (config != null && !getWorkspaceStatusValues(env, config)) {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java
index 09fc0f2176..965c3fb4d0 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java
@@ -31,12 +31,10 @@ import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.skyframe.SkyFunction.Environment;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.ValueOrException;
-
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
-
import javax.annotation.Nullable;
/**
@@ -65,7 +63,8 @@ public final class SkyframeDependencyResolver extends DependencyResolver {
}
@Override
- protected void missingEdgeHook(Target from, Label to, NoSuchThingException e) {
+ protected void missingEdgeHook(Target from, Label to, NoSuchThingException e)
+ throws InterruptedException {
if (e instanceof NoSuchTargetException) {
NoSuchTargetException nste = (NoSuchTargetException) e;
if (to.equals(nste.getLabel())) {
@@ -87,7 +86,8 @@ public final class SkyframeDependencyResolver extends DependencyResolver {
@Nullable
@Override
- protected Target getTarget(Target from, Label label, NestedSetBuilder<Label> rootCauses) {
+ protected Target getTarget(Target from, Label label, NestedSetBuilder<Label> rootCauses)
+ throws InterruptedException {
SkyKey key = PackageValue.key(label.getPackageIdentifier());
PackageValue packageValue;
try {
@@ -125,7 +125,8 @@ public final class SkyframeDependencyResolver extends DependencyResolver {
@Override
protected List<BuildConfiguration> getConfigurations(
Set<Class<? extends BuildConfiguration.Fragment>> fragments,
- Iterable<BuildOptions> buildOptions) throws InvalidConfigurationException {
+ Iterable<BuildOptions> buildOptions)
+ throws InvalidConfigurationException, InterruptedException {
List<SkyKey> keys = new ArrayList<>();
for (BuildOptions options : buildOptions) {
keys.add(BuildConfigurationValue.key(fragments, options));
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java
index 7ebb7b0018..ceda17193d 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java
@@ -32,7 +32,6 @@ import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.MemoizingEvaluator;
import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyKey;
-
import java.io.IOException;
/**
@@ -56,7 +55,7 @@ class SkyframePackageLoaderWithValueEnvironment implements PackageProviderForCon
}
private Package getPackage(final PackageIdentifier pkgIdentifier)
- throws NoSuchPackageException {
+ throws NoSuchPackageException, InterruptedException {
SkyKey key = PackageValue.key(pkgIdentifier);
PackageValue value = (PackageValue) env.getValueOrThrow(key, NoSuchPackageException.class);
if (value != null) {
@@ -66,13 +65,15 @@ class SkyframePackageLoaderWithValueEnvironment implements PackageProviderForCon
}
@Override
- public Target getTarget(Label label) throws NoSuchPackageException, NoSuchTargetException {
+ public Target getTarget(Label label)
+ throws NoSuchPackageException, NoSuchTargetException, InterruptedException {
Package pkg = getPackage(label.getPackageIdentifier());
return pkg == null ? null : pkg.getTarget(label.getName());
}
@Override
- public void addDependency(Package pkg, String fileName) throws LabelSyntaxException, IOException {
+ public void addDependency(Package pkg, String fileName)
+ throws LabelSyntaxException, IOException, InterruptedException {
RootedPath fileRootedPath = RootedPath.toRootedPath(pkg.getSourceRoot(),
pkg.getPackageIdentifier().getSourceRoot().getRelative(fileName));
FileValue result = (FileValue) env.getValue(FileValue.key(fileRootedPath));
@@ -83,7 +84,7 @@ class SkyframePackageLoaderWithValueEnvironment implements PackageProviderForCon
@Override
public <T extends Fragment> T getFragment(BuildOptions buildOptions, Class<T> fragmentType)
- throws InvalidConfigurationException {
+ throws InvalidConfigurationException, InterruptedException {
ConfigurationFragmentValue fragmentNode = (ConfigurationFragmentValue) env.getValueOrThrow(
ConfigurationFragmentValue.key(buildOptions, fragmentType, ruleClassProvider),
InvalidConfigurationException.class);
@@ -94,7 +95,7 @@ class SkyframePackageLoaderWithValueEnvironment implements PackageProviderForCon
}
@Override
- public BlazeDirectories getDirectories() {
+ public BlazeDirectories getDirectories() throws InterruptedException {
return PrecomputedValue.BLAZE_DIRECTORIES.get(env);
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunction.java
index c4889fa7d8..951d8a78b9 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunction.java
@@ -47,13 +47,11 @@ import com.google.devtools.build.skyframe.SkyFunctionException.Transience;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
import com.google.devtools.build.skyframe.ValueOrException2;
-
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
-
import javax.annotation.Nullable;
/**
@@ -211,17 +209,17 @@ public class SkylarkImportLookupFunction implements SkyFunction {
}
/**
- * Computes the set of Labels corresponding to a collection of PathFragments representing
- * absolute import paths.
- *
+ * Computes the set of Labels corresponding to a collection of PathFragments representing absolute
+ * import paths.
+ *
* @return a map from the computed {@link Label}s to the corresponding {@link PathFragment}s;
- * {@code null} if any Skyframe dependencies are unavailable.
+ * {@code null} if any Skyframe dependencies are unavailable.
* @throws SkylarkImportFailedException
*/
@Nullable
static ImmutableMap<PathFragment, Label> labelsForAbsoluteImports(
ImmutableSet<PathFragment> pathsToLookup, Environment env)
- throws SkylarkImportFailedException {
+ throws SkylarkImportFailedException, InterruptedException {
// Import PathFragments are absolute, so there is a 1-1 mapping from corresponding Labels.
ImmutableMap.Builder<PathFragment, Label> outputMap = new ImmutableMap.Builder<>();
@@ -290,19 +288,17 @@ public class SkylarkImportLookupFunction implements SkyFunction {
/**
* Computes the set of {@link Label}s corresponding to a set of Skylark {@link LoadStatement}s.
- *
+ *
* @param imports a collection of Skylark {@link LoadStatement}s
* @param containingFileLabel the {@link Label} of the file containing the load statements
- * @return an {@link ImmutableMap} which maps a {@link String} used in the load statement to
- * its corresponding {@Label}. Returns {@code null} if any Skyframe dependencies are
- * unavailable.
- * @throws SkylarkImportFailedException if no package can be found that contains the
- * loaded file
+ * @return an {@link ImmutableMap} which maps a {@link String} used in the load statement to its
+ * corresponding {@Label}. Returns {@code null} if any Skyframe dependencies are unavailable.
+ * @throws SkylarkImportFailedException if no package can be found that contains the loaded file
*/
@Nullable
static ImmutableMap<String, Label> findLabelsForLoadStatements(
ImmutableCollection<SkylarkImport> imports, Label containingFileLabel, Environment env)
- throws SkylarkImportFailedException {
+ throws SkylarkImportFailedException, InterruptedException {
Preconditions.checkArgument(
!containingFileLabel.getPackageIdentifier().getRepository().isDefault());
Map<String, Label> outputMap = Maps.newHashMapWithExpectedSize(imports.size());
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetMarkerFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetMarkerFunction.java
index 736455ba2a..2aeba41d09 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetMarkerFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetMarkerFunction.java
@@ -25,7 +25,6 @@ import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import javax.annotation.Nullable;
/**
@@ -37,7 +36,8 @@ import javax.annotation.Nullable;
public final class TargetMarkerFunction implements SkyFunction {
@Override
- public SkyValue compute(SkyKey key, Environment env) throws TargetMarkerFunctionException {
+ public SkyValue compute(SkyKey key, Environment env)
+ throws TargetMarkerFunctionException, InterruptedException {
try {
return computeTargetMarkerValue(key, env);
} catch (NoSuchTargetException e) {
@@ -50,7 +50,7 @@ public final class TargetMarkerFunction implements SkyFunction {
@Nullable
static TargetMarkerValue computeTargetMarkerValue(SkyKey key, Environment env)
- throws NoSuchTargetException, NoSuchPackageException {
+ throws NoSuchTargetException, NoSuchPackageException, InterruptedException {
Label label = (Label) key.argument();
PathFragment pkgForLabel = label.getPackageFragment();
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java
index 5215b7370a..60600caa1a 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java
@@ -53,7 +53,7 @@ import javax.annotation.Nullable;
final class TargetPatternPhaseFunction implements SkyFunction {
@Override
- public TargetPatternPhaseValue compute(SkyKey key, Environment env) {
+ public TargetPatternPhaseValue compute(SkyKey key, Environment env) throws InterruptedException {
TargetPatternList options = (TargetPatternList) key.argument();
PackageValue packageValue = null;
boolean workspaceError = false;
@@ -189,8 +189,9 @@ final class TargetPatternPhaseFunction implements SkyFunction {
* @param compileOneDependency if true, enables alternative interpretation of targetPatterns; see
* {@link LoadingOptions#compileOneDependency}
*/
- private static ResolvedTargets<Target> getTargetsToBuild(Environment env,
- List<String> targetPatterns, String offset, boolean compileOneDependency) {
+ private static ResolvedTargets<Target> getTargetsToBuild(
+ Environment env, List<String> targetPatterns, String offset, boolean compileOneDependency)
+ throws InterruptedException {
List<SkyKey> patternSkyKeys = new ArrayList<>();
for (TargetPatternSkyKeyOrException keyOrException :
TargetPatternValue.keys(targetPatterns, FilteringPolicies.FILTER_MANUAL, offset)) {
@@ -253,8 +254,9 @@ final class TargetPatternPhaseFunction implements SkyFunction {
* @param targetPatterns the list of command-line target patterns specified by the user
* @param testFilter the test filter
*/
- private static ResolvedTargets<Target> determineTests(Environment env,
- List<String> targetPatterns, String offset, TestFilter testFilter) {
+ private static ResolvedTargets<Target> determineTests(
+ Environment env, List<String> targetPatterns, String offset, TestFilter testFilter)
+ throws InterruptedException {
List<SkyKey> patternSkyKeys = new ArrayList<>();
for (TargetPatternSkyKeyOrException keyOrException :
TargetPatternValue.keys(targetPatterns, FilteringPolicies.FILTER_TESTS, offset)) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternValue.java
index 7641f6eec9..e555b7df99 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternValue.java
@@ -13,8 +13,6 @@
// limitations under the License.
package com.google.devtools.build.lib.skyframe;
-import com.google.common.base.Supplier;
-import com.google.common.base.Suppliers;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
@@ -32,9 +30,9 @@ import com.google.devtools.build.lib.pkgcache.FilteringPolicies;
import com.google.devtools.build.lib.pkgcache.FilteringPolicy;
import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.vfs.PathFragment;
+import com.google.devtools.build.skyframe.InterruptibleSupplier;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
@@ -209,13 +207,15 @@ public final class TargetPatternValue implements SkyValue {
return excludedSubdirectories;
}
- public ImmutableSet<PathFragment> getAllSubdirectoriesToExclude(
- Iterable<PathFragment> blacklistedPackagePrefixes) {
- return getAllSubdirectoriesToExclude(Suppliers.ofInstance(blacklistedPackagePrefixes));
+ ImmutableSet<PathFragment> getAllSubdirectoriesToExclude(
+ Iterable<PathFragment> blacklistedPackagePrefixes) throws InterruptedException {
+ return getAllSubdirectoriesToExclude(
+ new InterruptibleSupplier.Instance<>(blacklistedPackagePrefixes));
}
public ImmutableSet<PathFragment> getAllSubdirectoriesToExclude(
- Supplier<? extends Iterable<PathFragment>> blacklistedPackagePrefixes) {
+ InterruptibleSupplier<? extends Iterable<PathFragment>> blacklistedPackagePrefixes)
+ throws InterruptedException {
ImmutableSet.Builder<PathFragment> excludedPathsBuilder = ImmutableSet.builder();
excludedPathsBuilder.addAll(getExcludedSubdirectories());
if (parsedPattern.getType() == Type.TARGETS_BELOW_DIRECTORY) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternsResultBuilder.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternsResultBuilder.java
index 575a0ff30e..3d0acf06af 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternsResultBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternsResultBuilder.java
@@ -23,7 +23,6 @@ import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.skyframe.WalkableGraph;
-
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -43,10 +42,9 @@ abstract class TargetPatternsResultBuilder {
hasError = true;
}
- /**
- * Returns final set of targets and sets error flag if required.
- */
- public ResolvedTargets<Target> build(WalkableGraph walkableGraph) throws TargetParsingException {
+ /** Returns final set of targets and sets error flag if required. */
+ public ResolvedTargets<Target> build(WalkableGraph walkableGraph)
+ throws TargetParsingException, InterruptedException {
precomputePackages(walkableGraph);
ResolvedTargets.Builder<Target> resolvedTargetsBuilder = buildInternal();
if (hasError) {
@@ -74,7 +72,7 @@ abstract class TargetPatternsResultBuilder {
return resolvedTargetsBuilder;
}
- private void precomputePackages(WalkableGraph walkableGraph) {
+ private void precomputePackages(WalkableGraph walkableGraph) throws InterruptedException {
Set<PackageIdentifier> packagesToRequest = getPackagesIdentifiers();
packages = Maps.newHashMapWithExpectedSize(packagesToRequest.size());
for (PackageIdentifier pkgIdentifier : packagesToRequest) {
@@ -102,8 +100,8 @@ abstract class TargetPatternsResultBuilder {
return packagesIdentifiers;
}
- private Package findPackageInGraph(PackageIdentifier pkgIdentifier,
- WalkableGraph walkableGraph) {
+ private static Package findPackageInGraph(
+ PackageIdentifier pkgIdentifier, WalkableGraph walkableGraph) throws InterruptedException {
return Preconditions.checkNotNull(
((PackageValue) walkableGraph.getValue(PackageValue.key(pkgIdentifier))), pkgIdentifier)
.getPackage();
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TestCompletionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TestCompletionFunction.java
index d277b1955a..3523d3370b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TestCompletionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TestCompletionFunction.java
@@ -29,12 +29,8 @@ import com.google.devtools.build.skyframe.SkyValue;
* runs.
*/
public final class TestCompletionFunction implements SkyFunction {
-
- public TestCompletionFunction() {
- }
-
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) {
+ public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedException {
TestCompletionValue.TestCompletionKey key =
(TestCompletionValue.TestCompletionKey) skyKey.argument();
LabelAndConfiguration lac = key.labelAndConfiguration();
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionFunction.java
index d5ecb25ae2..6324b2e03e 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionFunction.java
@@ -25,7 +25,6 @@ import com.google.devtools.build.lib.skyframe.TestSuiteExpansionValue.TestSuiteE
import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
-
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashSet;
@@ -33,7 +32,6 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
-
import javax.annotation.Nullable;
/**
@@ -41,7 +39,7 @@ import javax.annotation.Nullable;
*/
final class TestSuiteExpansionFunction implements SkyFunction {
@Override
- public SkyValue compute(SkyKey key, Environment env) {
+ public SkyValue compute(SkyKey key, Environment env) throws InterruptedException {
TestSuiteExpansion expansion = (TestSuiteExpansion) key.argument();
ResolvedTargets<Target> targets = labelsToTargets(env, expansion.getTargets(), false);
List<SkyKey> testsInSuitesKeys = new ArrayList<>();
@@ -80,7 +78,7 @@ final class TestSuiteExpansionFunction implements SkyFunction {
}
static ResolvedTargets<Target> labelsToTargets(
- Environment env, ImmutableSet<Label> labels, boolean hasError) {
+ Environment env, ImmutableSet<Label> labels, boolean hasError) throws InterruptedException {
Set<PackageIdentifier> pkgIdentifiers = new LinkedHashSet<>();
for (Label label : labels) {
pkgIdentifiers.add(label.getPackageIdentifier());
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java
index 4556c762fb..18a747ee97 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java
@@ -35,7 +35,6 @@ import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
import com.google.devtools.build.skyframe.ValueOrException;
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -44,7 +43,6 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
-
import javax.annotation.Nullable;
/**
@@ -54,7 +52,7 @@ import javax.annotation.Nullable;
// TODO(ulfjack): What about test_suite rules that include each other.
final class TestsInSuiteFunction implements SkyFunction {
@Override
- public SkyValue compute(SkyKey key, Environment env) {
+ public SkyValue compute(SkyKey key, Environment env) throws InterruptedException {
TestsInSuite expansion = (TestsInSuite) key.argument();
ResolvedTargets<Target> result =
computeTestsInSuite(env, expansion.getTestSuite(), expansion.isStrict());
@@ -65,13 +63,13 @@ final class TestsInSuiteFunction implements SkyFunction {
}
/**
- * Populates 'result' with all the tests associated with the specified
- * 'testSuite'. Throws an exception if any target is missing.
+ * Populates 'result' with all the tests associated with the specified 'testSuite'. Throws an
+ * exception if any target is missing.
*
- * <p>CAUTION! Keep this logic consistent with {@code TestSuite}!
+ * <p>CAUTION! Keep this logic consistent with {@code TestSuite}!
*/
- private ResolvedTargets<Target> computeTestsInSuite(
- Environment env, Rule testSuite, boolean strict) {
+ private static ResolvedTargets<Target> computeTestsInSuite(
+ Environment env, Rule testSuite, boolean strict) throws InterruptedException {
ResolvedTargets.Builder<Target> builder = ResolvedTargets.builder();
List<Target> testsAndSuites = new ArrayList<>();
// Note that testsAndSuites can contain input file targets; the test_suite rule does not
@@ -132,8 +130,9 @@ final class TestsInSuiteFunction implements SkyFunction {
* found a problem during the lookup process; the actual error message is reported to the
* environment.
*/
- private boolean getPrerequisites(Environment env, Rule testSuite, String attrName,
- List<Target> targets) {
+ private static boolean getPrerequisites(
+ Environment env, Rule testSuite, String attrName, List<Target> targets)
+ throws InterruptedException {
List<Label> labels =
NonconfigurableAttributeMapper.of(testSuite).get(attrName, BuildType.LABEL_LIST);
Set<PackageIdentifier> pkgIdentifiers = new LinkedHashSet<>();
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java
index 44b161b5a0..3bc1f30845 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java
@@ -34,7 +34,6 @@ import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
import com.google.devtools.build.skyframe.ValueOrException2;
-
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
@@ -42,7 +41,6 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
-
import javax.annotation.Nullable;
/**
@@ -79,10 +77,13 @@ abstract class TransitiveBaseTraversalFunction<TProcessedTargets> implements Sky
abstract TProcessedTargets processTarget(Label label, TargetAndErrorIfAny targetAndErrorIfAny);
- abstract void processDeps(TProcessedTargets processedTargets, EventHandler eventHandler,
+ abstract void processDeps(
+ TProcessedTargets processedTargets,
+ EventHandler eventHandler,
TargetAndErrorIfAny targetAndErrorIfAny,
Iterable<Entry<SkyKey, ValueOrException2<NoSuchPackageException, NoSuchTargetException>>>
- depEntries);
+ depEntries)
+ throws InterruptedException;
/**
* Returns a {@link SkyValue} based on the target and any errors it has, and the values
@@ -97,11 +98,11 @@ abstract class TransitiveBaseTraversalFunction<TProcessedTargets> implements Sky
*/
@Nullable
abstract TargetMarkerValue getTargetMarkerValue(SkyKey targetMarkerKey, Environment env)
- throws NoSuchTargetException, NoSuchPackageException;
+ throws NoSuchTargetException, NoSuchPackageException, InterruptedException;
@Override
public SkyValue compute(SkyKey key, Environment env)
- throws TransitiveBaseTraversalFunctionException {
+ throws TransitiveBaseTraversalFunctionException, InterruptedException {
Label label = (Label) key.argument();
LoadTargetResults loadTargetResults;
try {
@@ -157,9 +158,11 @@ abstract class TransitiveBaseTraversalFunction<TProcessedTargets> implements Sky
* <p>This method may return a precise set of aspect keys, but may need to request additional
* dependencies from the env to do so.
*/
- private Iterable<SkyKey> getStrictLabelAspectKeys(Target target,
- Map<SkyKey, ValueOrException2<NoSuchPackageException, NoSuchTargetException>> depMap,
- Environment env) {
+ private Iterable<SkyKey> getStrictLabelAspectKeys(
+ Target target,
+ Map<SkyKey, ValueOrException2<NoSuchPackageException, NoSuchTargetException>> depMap,
+ Environment env)
+ throws InterruptedException {
List<SkyKey> depKeys = Lists.newArrayList();
if (target instanceof Rule) {
Map<Label, ValueOrException2<NoSuchPackageException, NoSuchTargetException>> labelDepMap =
@@ -189,9 +192,10 @@ abstract class TransitiveBaseTraversalFunction<TProcessedTargets> implements Sky
Attribute attr,
Label toLabel,
ValueOrException2<NoSuchPackageException, NoSuchTargetException> toVal,
- Environment env);
+ Environment env)
+ throws InterruptedException;
- private Iterable<SkyKey> getLabelDepKeys(Target target) {
+ private Iterable<SkyKey> getLabelDepKeys(Target target) throws InterruptedException {
List<SkyKey> depKeys = Lists.newArrayList();
for (Label depLabel : getLabelDeps(target)) {
depKeys.add(getKey(depLabel));
@@ -200,7 +204,7 @@ abstract class TransitiveBaseTraversalFunction<TProcessedTargets> implements Sky
}
// TODO(bazel-team): Unify this logic with that in LabelVisitor, and possibly DependencyResolver.
- private static Iterable<Label> getLabelDeps(Target target) {
+ private static Iterable<Label> getLabelDeps(Target target) throws InterruptedException {
final Set<Label> labels = new HashSet<>();
if (target instanceof OutputFile) {
Rule rule = ((OutputFile) target).getGeneratingRule();
@@ -217,7 +221,7 @@ abstract class TransitiveBaseTraversalFunction<TProcessedTargets> implements Sky
return labels;
}
- private static void visitRule(Target target, Set<Label> labels) {
+ private static void visitRule(Target target, Set<Label> labels) throws InterruptedException {
labels.addAll(((Rule) target).getTransitions(DependencyFilter.NO_NODEP_ATTRIBUTES).values());
}
@@ -295,7 +299,7 @@ abstract class TransitiveBaseTraversalFunction<TProcessedTargets> implements Sky
}
private LoadTargetResults loadTarget(Environment env, Label label)
- throws NoSuchTargetException, NoSuchPackageException {
+ throws NoSuchTargetException, NoSuchPackageException, InterruptedException {
SkyKey packageKey = PackageValue.key(label.getPackageIdentifier());
SkyKey targetKey = TargetMarkerValue.key(label);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java
index 81e53e0429..b620259f25 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java
@@ -118,10 +118,13 @@ public class TransitiveTargetFunction
}
@Override
- void processDeps(TransitiveTargetValueBuilder builder, EventHandler eventHandler,
+ void processDeps(
+ TransitiveTargetValueBuilder builder,
+ EventHandler eventHandler,
TargetAndErrorIfAny targetAndErrorIfAny,
Iterable<Entry<SkyKey, ValueOrException2<NoSuchPackageException, NoSuchTargetException>>>
- depEntries) {
+ depEntries)
+ throws InterruptedException {
boolean successfulTransitiveLoading = builder.isSuccessfulTransitiveLoading();
Target target = targetAndErrorIfAny.getTarget();
NestedSetBuilder<Label> transitiveRootCauses = builder.getTransitiveRootCauses();
@@ -241,9 +244,13 @@ public class TransitiveTargetFunction
}
@Override
- protected Collection<Label> getAspectLabels(Rule fromRule, Attribute attr, Label toLabel,
+ protected Collection<Label> getAspectLabels(
+ Rule fromRule,
+ Attribute attr,
+ Label toLabel,
ValueOrException2<NoSuchPackageException, NoSuchTargetException> toVal,
- final Environment env) {
+ final Environment env)
+ throws InterruptedException {
SkyKey packageKey = PackageValue.key(toLabel.getPackageIdentifier());
try {
PackageValue pkgValue =
@@ -269,14 +276,15 @@ public class TransitiveTargetFunction
@Override
TargetMarkerValue getTargetMarkerValue(SkyKey targetMarkerKey, Environment env)
- throws NoSuchTargetException, NoSuchPackageException {
+ throws NoSuchTargetException, NoSuchPackageException, InterruptedException {
return (TargetMarkerValue)
env.getValueOrThrow(
targetMarkerKey, NoSuchTargetException.class, NoSuchPackageException.class);
}
- private void maybeReportErrorAboutMissingEdge(
- Target target, Label depLabel, NoSuchThingException e, EventHandler eventHandler) {
+ private static void maybeReportErrorAboutMissingEdge(
+ Target target, Label depLabel, NoSuchThingException e, EventHandler eventHandler)
+ throws InterruptedException {
if (e instanceof NoSuchTargetException) {
NoSuchTargetException nste = (NoSuchTargetException) e;
if (depLabel.equals(nste.getLabel())) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java
index 1852793e70..0a85af09be 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java
@@ -29,10 +29,8 @@ import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
import com.google.devtools.build.skyframe.ValueOrException2;
-
import java.util.Collection;
import java.util.Map.Entry;
-
import javax.annotation.Nullable;
/**
@@ -117,7 +115,7 @@ public class TransitiveTraversalFunction
@Override
TargetMarkerValue getTargetMarkerValue(SkyKey targetMarkerKey, Environment env)
- throws NoSuchTargetException, NoSuchPackageException {
+ throws NoSuchTargetException, NoSuchPackageException, InterruptedException {
return TargetMarkerFunction.computeTargetMarkerValue(targetMarkerKey, env);
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusFunction.java
index 4cd9099ec2..12b36a4a31 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusFunction.java
@@ -25,7 +25,7 @@ public class WorkspaceStatusFunction implements SkyFunction {
}
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) {
+ public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedException {
Preconditions.checkState(
WorkspaceStatusValue.SKY_KEY.equals(skyKey), WorkspaceStatusValue.SKY_KEY);