Skip to content

Commit c608f65

Browse files
janakdrCopybara-Service
authored andcommitted
Make TargetPatternPhaseValue#getTargets and #getTestsToRun interrupt-safe.
PiperOrigin-RevId: 214006540
1 parent 6d2bfa4 commit c608f65

1 file changed

Lines changed: 25 additions & 28 deletions

File tree

src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.google.devtools.build.skyframe.SkyKey;
3333
import com.google.devtools.build.skyframe.SkyValue;
3434
import java.io.Serializable;
35+
import java.util.Collection;
3536
import java.util.Objects;
3637
import javax.annotation.Nullable;
3738

@@ -64,38 +65,34 @@ public final class TargetPatternPhaseValue implements SkyValue {
6465
this.workspaceName = workspaceName;
6566
}
6667

68+
private static ImmutableSet<Target> getTargetsFromLabels(
69+
Collection<Label> labels, ExtendedEventHandler eventHandler, PackageManager packageManager)
70+
throws InterruptedException {
71+
ImmutableSet.Builder<Target> result = ImmutableSet.builderWithExpectedSize(labels.size());
72+
for (Label label : labels) {
73+
try {
74+
result.add(
75+
packageManager
76+
.getPackage(eventHandler, label.getPackageIdentifier())
77+
.getTarget(label.getName()));
78+
} catch (NoSuchTargetException | NoSuchPackageException e) {
79+
throw new IllegalStateException(
80+
"Failed to get preloaded package from TargetPatternPhaseValue for " + label, e);
81+
}
82+
}
83+
return result.build();
84+
}
85+
6786
public ImmutableSet<Target> getTargets(
68-
ExtendedEventHandler eventHandler, PackageManager packageManager) {
69-
return targetLabels
70-
.stream()
71-
.map(
72-
(label) -> {
73-
try {
74-
return packageManager
75-
.getPackage(eventHandler, label.getPackageIdentifier())
76-
.getTarget(label.getName());
77-
} catch (NoSuchPackageException | NoSuchTargetException | InterruptedException e) {
78-
throw new RuntimeException("Failed to get package from TargetPatternPhaseValue", e);
79-
}
80-
})
81-
.collect(ImmutableSet.toImmutableSet());
87+
ExtendedEventHandler eventHandler, PackageManager packageManager)
88+
throws InterruptedException {
89+
return getTargetsFromLabels(targetLabels, eventHandler, packageManager);
8290
}
8391

8492
public ImmutableSet<Target> getTestsToRun(
85-
ExtendedEventHandler eventHandler, PackageManager packageManager) {
86-
return testsToRunLabels
87-
.stream()
88-
.map(
89-
(label) -> {
90-
try {
91-
return packageManager
92-
.getPackage(eventHandler, label.getPackageIdentifier())
93-
.getTarget(label.getName());
94-
} catch (NoSuchPackageException | NoSuchTargetException | InterruptedException e) {
95-
throw new RuntimeException("Failed to get package from TargetPatternPhaseValue", e);
96-
}
97-
})
98-
.collect(ImmutableSet.toImmutableSet());
93+
ExtendedEventHandler eventHandler, PackageManager packageManager)
94+
throws InterruptedException {
95+
return getTargetsFromLabels(testsToRunLabels, eventHandler, packageManager);
9996
}
10097

10198
public ImmutableSet<Label> getTargetLabels() {

0 commit comments

Comments
 (0)