aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2016-11-23 12:38:24 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-11-23 13:56:26 +0000
commit74d716bf1b00badbe7f1f028d8f005b1780b06bc (patch)
tree281823450c64d35a9912e8a88967b729fdf335f7 /src/main/java
parent7e5396a66cd7021150f9fab9ec8160c92fde618d (diff)
Declare order constraint in BEP
In the build event protocol, provide order guarantee to facilitate use: All the root causes referenced by a TargetCompleteEvent need to come before that event. Note that, by causality, the root causes have to be already knows, hence the root cause event is either generated already or about to be generated. -- Change-Id: I2bbe9b1a832c23217104a41e21d2f6ff13211c9a Reviewed-on: https://cr.bazel.build/7371 MOS_MIGRATED_REVID=140018440
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
index 453127c9f7..e2ebbb8624 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
@@ -16,9 +16,9 @@ package com.google.devtools.build.lib.analysis;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
-import com.google.devtools.build.lib.buildeventstream.BuildEvent;
import com.google.devtools.build.lib.buildeventstream.BuildEventId;
import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos;
+import com.google.devtools.build.lib.buildeventstream.BuildEventWithOrderConstraint;
import com.google.devtools.build.lib.buildeventstream.GenericBuildEvent;
import com.google.devtools.build.lib.causes.Cause;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
@@ -30,15 +30,22 @@ import com.google.devtools.build.skyframe.SkyValue;
import java.util.Collection;
/** This event is fired as soon as a target is either built or fails. */
-public final class TargetCompleteEvent implements SkyValue, BuildEvent {
+public final class TargetCompleteEvent implements SkyValue, BuildEventWithOrderConstraint {
private final ConfiguredTarget target;
private final NestedSet<Cause> rootCauses;
+ private final Collection<BuildEventId> postedAfter;
private TargetCompleteEvent(ConfiguredTarget target, NestedSet<Cause> rootCauses) {
this.target = target;
this.rootCauses =
(rootCauses == null) ? NestedSetBuilder.<Cause>emptySet(Order.STABLE_ORDER) : rootCauses;
+
+ ImmutableList.Builder postedAfterBuilder = ImmutableList.builder();
+ for (Cause cause : getRootCauses()) {
+ postedAfterBuilder.add(BuildEventId.fromCause(cause));
+ }
+ this.postedAfter = postedAfterBuilder.build();
}
/**
@@ -98,4 +105,9 @@ public final class TargetCompleteEvent implements SkyValue, BuildEvent {
BuildEventStreamProtos.TargetComplete.newBuilder().setSuccess(!failed()).build();
return GenericBuildEvent.protoChaining(this).setCompleted(complete).build();
}
+
+ @Override
+ public Collection<BuildEventId> postedAfter() {
+ return postedAfter;
+ }
}