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() {