From 0fdaf75b68b2d8c574b3673f313571d65428780d Mon Sep 17 00:00:00 2001 From: Janak Ramakrishnan Date: Thu, 30 Apr 2015 17:31:14 +0000 Subject: 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 --- .../google/devtools/build/lib/rules/extra/ExtraAction.java | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules/extra/ExtraAction.java') 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 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 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 discoveredInputs) { - setInputs(createInputs(discoveredInputs, extraActionInputs)); + public synchronized void updateInputs(Iterable discoveredInputs) { + setInputs(discoveredInputs); inputsKnown = true; } -- cgit v1.2.3