aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/actions/MapBasedActionGraph.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/actions/MapBasedActionGraph.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/MapBasedActionGraph.java15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/MapBasedActionGraph.java b/src/main/java/com/google/devtools/build/lib/actions/MapBasedActionGraph.java
index f35f963bf7..dadad155e6 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/MapBasedActionGraph.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/MapBasedActionGraph.java
@@ -15,6 +15,7 @@
package com.google.devtools.build.lib.actions;
import com.google.common.base.Preconditions;
+import com.google.devtools.build.lib.actions.Artifact.OwnerlessArtifactWrapper;
import javax.annotation.Nullable;
import javax.annotation.concurrent.ThreadSafe;
@@ -24,7 +25,7 @@ import javax.annotation.concurrent.ThreadSafe;
@ThreadSafe
public final class MapBasedActionGraph implements MutableActionGraph {
private final ActionKeyContext actionKeyContext;
- private final ConcurrentMultimapWithHeadElement<Artifact, ActionAnalysisMetadata>
+ private final ConcurrentMultimapWithHeadElement<OwnerlessArtifactWrapper, ActionAnalysisMetadata>
generatingActionMap = new ConcurrentMultimapWithHeadElement<>();
public MapBasedActionGraph(ActionKeyContext actionKeyContext) {
@@ -34,17 +35,18 @@ public final class MapBasedActionGraph implements MutableActionGraph {
@Override
@Nullable
public ActionAnalysisMetadata getGeneratingAction(Artifact artifact) {
- return generatingActionMap.get(artifact);
+ return generatingActionMap.get(new OwnerlessArtifactWrapper(artifact));
}
@Override
public void registerAction(ActionAnalysisMetadata action) throws ActionConflictException {
for (Artifact artifact : action.getOutputs()) {
- ActionAnalysisMetadata previousAction = generatingActionMap.putAndGet(artifact, action);
+ OwnerlessArtifactWrapper wrapper = new OwnerlessArtifactWrapper(artifact);
+ ActionAnalysisMetadata previousAction = generatingActionMap.putAndGet(wrapper, action);
if (previousAction != null
&& previousAction != action
&& !Actions.canBeShared(actionKeyContext, action, previousAction)) {
- generatingActionMap.remove(artifact, action);
+ generatingActionMap.remove(wrapper, action);
throw new ActionConflictException(actionKeyContext, artifact, previousAction, action);
}
}
@@ -53,8 +55,9 @@ public final class MapBasedActionGraph implements MutableActionGraph {
@Override
public void unregisterAction(ActionAnalysisMetadata action) {
for (Artifact artifact : action.getOutputs()) {
- generatingActionMap.remove(artifact, action);
- ActionAnalysisMetadata otherAction = generatingActionMap.get(artifact);
+ OwnerlessArtifactWrapper wrapper = new OwnerlessArtifactWrapper(artifact);
+ generatingActionMap.remove(wrapper, action);
+ ActionAnalysisMetadata otherAction = generatingActionMap.get(wrapper);
Preconditions.checkState(
otherAction == null
|| (otherAction != action