diff options
author | 2017-05-31 14:11:33 +0200 | |
---|---|---|
committer | 2017-05-31 15:38:58 +0200 | |
commit | b3bcbd7745d00462412f9b16e0d364df19f2f2c4 (patch) | |
tree | 45217b65e81bd690ba8632119bb5683ff425bd4e /src | |
parent | c5d1d55a7fc27d72b58f14859429019b012f6a17 (diff) |
Also report stored posts further up in Skyframe
As SkyFunctions are supposed to be restartable, e.g., if prerequisites are
missing, events generated by them are temporarily stored. So are BuildEvents
posted by them. However, once the evaluation of a SkyFunction is finalized,
the stored posts need to be reposted. Do this.
Change-Id: I4ce20266fbfcbb298e93eb53086fa9916874f5d8
PiperOrigin-RevId: 157575119
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/events/StoredEventHandler.java | 4 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/events/StoredEventHandler.java b/src/main/java/com/google/devtools/build/lib/events/StoredEventHandler.java index e68c5d2a6c..008b8936bf 100644 --- a/src/main/java/com/google/devtools/build/lib/events/StoredEventHandler.java +++ b/src/main/java/com/google/devtools/build/lib/events/StoredEventHandler.java @@ -28,6 +28,10 @@ public class StoredEventHandler implements ExtendedEventHandler { return ImmutableList.copyOf(events); } + public synchronized ImmutableList<ExtendedEventHandler.Postable> getPosts() { + return ImmutableList.copyOf(posts); + } + /** Returns true if there are no stored events. */ public synchronized boolean isEmpty() { return events.isEmpty() && posts.isEmpty(); diff --git a/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java b/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java index 1a56de207d..715ff676a9 100644 --- a/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java +++ b/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java @@ -524,6 +524,10 @@ class SkyFunctionEnvironment extends AbstractSkyFunctionEnvironment { */ void commit(NodeEntry primaryEntry, EnqueueParentBehavior enqueueParents) throws InterruptedException { + for (ExtendedEventHandler.Postable post : eventHandler.getPosts()) { + evaluatorContext.getReporter().post(post); + } + // Construct the definitive error info, if there is one. finalizeErrorInfo(); |