diff options
author | 2015-04-30 17:31:14 +0000 | |
---|---|---|
committer | 2015-05-01 22:21:10 +0000 | |
commit | 0fdaf75b68b2d8c574b3673f313571d65428780d (patch) | |
tree | 153aa4cbfe8ab2130f0ea49b98d0f365ff052653 /src/main/java/com/google/devtools/build/lib/rules/extra/ExtraAction.java | |
parent | 1373653f6d4903963abdd5daceabf3193fa240f4 (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.java | 14 |
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; } |