aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/ActionCacheChecker.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/cache/MetadataHandler.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandler.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java2
4 files changed, 14 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionCacheChecker.java b/src/main/java/com/google/devtools/build/lib/actions/ActionCacheChecker.java
index 004f2c3428..40eabeb9de 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionCacheChecker.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionCacheChecker.java
@@ -138,8 +138,8 @@ public class ActionCacheChecker {
* {@link Token} if the action needs to be executed, and null otherwise.
*
* <p>If this method returns non-null, indicating that the action will be executed, the
- * metadataHandler's {@link MetadataHandler#discardMetadata} method must be called, so that it
- * does not serve stale metadata for the action's outputs after the action is executed.
+ * metadataHandler's {@link MetadataHandler#discardOutputMetadata} method must be called, so that
+ * it does not serve stale metadata for the action's outputs after the action is executed.
*/
// Note: the handler should only be used for DEPCHECKER events; there's no
// guarantee it will be available for other events.
diff --git a/src/main/java/com/google/devtools/build/lib/actions/cache/MetadataHandler.java b/src/main/java/com/google/devtools/build/lib/actions/cache/MetadataHandler.java
index 049fd61787..eda535ddcc 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/cache/MetadataHandler.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/cache/MetadataHandler.java
@@ -19,7 +19,6 @@ import com.google.devtools.build.lib.actions.MiddlemanAction;
import com.google.devtools.build.lib.vfs.FileStatus;
import java.io.IOException;
-import java.util.Collection;
/** Retrieves {@link Metadata} of {@link Artifact}s, and inserts virtual metadata as well. */
public interface MetadataHandler {
@@ -85,7 +84,11 @@ public interface MetadataHandler {
*/
boolean isInjected(Artifact artifact) throws IOException;
- /** Discards all metadata for the given artifacts, presumably because they will be modified. */
- void discardMetadata(Collection<Artifact> artifactList);
+ /**
+ * Discards all known output artifact metadata, presumably because outputs will be modified.
+ * May only be called before any metadata is injected using {@link #injectDigest} or
+ * {@link #markOmitted};
+ */
+ void discardOutputMetadata();
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandler.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandler.java
index 3230af8e32..7275222664 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandler.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandler.java
@@ -35,7 +35,6 @@ import com.google.devtools.build.lib.vfs.Symlinks;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -282,11 +281,13 @@ public class ActionMetadataHandler implements MetadataHandler {
}
@Override
- public void discardMetadata(Collection<Artifact> artifactList) {
+ public void discardOutputMetadata() {
Preconditions.checkState(injectedArtifacts.isEmpty(),
"Artifacts cannot be injected before action execution: %s", injectedArtifacts);
- outputArtifactData.keySet().removeAll(artifactList);
- additionalOutputData.keySet().removeAll(artifactList);
+ Preconditions.checkState(omittedOutputs.isEmpty(),
+ "Artifacts cannot be marked omitted before action execution: %s", omittedOutputs);
+ outputArtifactData.clear();
+ additionalOutputData.clear();
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java
index ba32dd8af3..d4361aedff 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java
@@ -673,7 +673,7 @@ public final class SkyframeActionExecutor {
ActionExecutionContext context, long actionStartTime)
throws ActionExecutionException, InterruptedException {
// Delete the metadataHandler's cache of the action's outputs, since they are being deleted.
- context.getMetadataHandler().discardMetadata(action.getOutputs());
+ context.getMetadataHandler().discardOutputMetadata();
// Delete the outputs before executing the action, just to ensure that
// the action really does produce the outputs.
try {