aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/extra/ExtraAction.java
diff options
context:
space:
mode:
authorGravatar Janak Ramakrishnan <janakr@google.com>2015-04-30 17:31:14 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-05-01 22:21:10 +0000
commit0fdaf75b68b2d8c574b3673f313571d65428780d (patch)
tree153aa4cbfe8ab2130f0ea49b98d0f365ff052653 /src/main/java/com/google/devtools/build/lib/rules/extra/ExtraAction.java
parent1373653f6d4903963abdd5daceabf3193fa240f4 (diff)
Stop updating shadowed action's inputs in case of an action cache hit for the extra action.
This meant that the action was potentially being mutated on two threads, which was bad. -- MOS_MIGRATED_REVID=92469122
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/extra/ExtraAction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/extra/ExtraAction.java14
1 files changed, 3 insertions, 11 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/extra/ExtraAction.java b/src/main/java/com/google/devtools/build/lib/rules/extra/ExtraAction.java
index 5f24310b97..78b76ca0af 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/extra/ExtraAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/extra/ExtraAction.java
@@ -19,7 +19,6 @@ import com.google.common.base.Predicates;
import com.google.common.collect.Collections2;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.AbstractAction;
import com.google.devtools.build.lib.actions.Action;
import com.google.devtools.build.lib.actions.ActionExecutionContext;
@@ -124,7 +123,7 @@ public final class ExtraAction extends SpawnAction {
if (shadowedAction.discoversInputs() && shadowedAction instanceof AbstractAction) {
Iterable<Artifact> additionalInputs =
((AbstractAction) shadowedAction).getInputFilesForExtraAction(actionExecutionContext);
- updateExtraActionInputs(additionalInputs);
+ updateInputs(createInputs(additionalInputs, extraActionInputs));
return ImmutableSet.copyOf(additionalInputs);
}
}
@@ -148,15 +147,8 @@ public final class ExtraAction extends SpawnAction {
}
@Override
- public void updateInputs(Iterable<Artifact> discoveredInputs) {
- shadowedAction.updateInputs(
- Iterables.filter(discoveredInputs, Predicates.not(Predicates.in(extraActionInputs))));
- Preconditions.checkArgument(shadowedAction.inputsKnown(), "%s %s", this, shadowedAction);
- updateExtraActionInputs(discoveredInputs);
- }
-
- private synchronized void updateExtraActionInputs(Iterable<Artifact> discoveredInputs) {
- setInputs(createInputs(discoveredInputs, extraActionInputs));
+ public synchronized void updateInputs(Iterable<Artifact> discoveredInputs) {
+ setInputs(discoveredInputs);
inputsKnown = true;
}