Make TargetPatternPhaseValue#getTargets and #getTestsToRun interrupt-safe.
PiperOrigin-RevId: 214006540
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java
index 224ea7e..bf6337c 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java
@@ -32,6 +32,7 @@
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
import java.io.Serializable;
+import java.util.Collection;
import java.util.Objects;
import javax.annotation.Nullable;
@@ -64,38 +65,34 @@
this.workspaceName = workspaceName;
}
+ private static ImmutableSet<Target> getTargetsFromLabels(
+ Collection<Label> labels, ExtendedEventHandler eventHandler, PackageManager packageManager)
+ throws InterruptedException {
+ ImmutableSet.Builder<Target> result = ImmutableSet.builderWithExpectedSize(labels.size());
+ for (Label label : labels) {
+ try {
+ result.add(
+ packageManager
+ .getPackage(eventHandler, label.getPackageIdentifier())
+ .getTarget(label.getName()));
+ } catch (NoSuchTargetException | NoSuchPackageException e) {
+ throw new IllegalStateException(
+ "Failed to get preloaded package from TargetPatternPhaseValue for " + label, e);
+ }
+ }
+ return result.build();
+ }
+
public ImmutableSet<Target> getTargets(
- ExtendedEventHandler eventHandler, PackageManager packageManager) {
- return targetLabels
- .stream()
- .map(
- (label) -> {
- try {
- return packageManager
- .getPackage(eventHandler, label.getPackageIdentifier())
- .getTarget(label.getName());
- } catch (NoSuchPackageException | NoSuchTargetException | InterruptedException e) {
- throw new RuntimeException("Failed to get package from TargetPatternPhaseValue", e);
- }
- })
- .collect(ImmutableSet.toImmutableSet());
+ ExtendedEventHandler eventHandler, PackageManager packageManager)
+ throws InterruptedException {
+ return getTargetsFromLabels(targetLabels, eventHandler, packageManager);
}
public ImmutableSet<Target> getTestsToRun(
- ExtendedEventHandler eventHandler, PackageManager packageManager) {
- return testsToRunLabels
- .stream()
- .map(
- (label) -> {
- try {
- return packageManager
- .getPackage(eventHandler, label.getPackageIdentifier())
- .getTarget(label.getName());
- } catch (NoSuchPackageException | NoSuchTargetException | InterruptedException e) {
- throw new RuntimeException("Failed to get package from TargetPatternPhaseValue", e);
- }
- })
- .collect(ImmutableSet.toImmutableSet());
+ ExtendedEventHandler eventHandler, PackageManager packageManager)
+ throws InterruptedException {
+ return getTargetsFromLabels(testsToRunLabels, eventHandler, packageManager);
}
public ImmutableSet<Label> getTargetLabels() {