diff options
Diffstat (limited to 'src/main/java/com/google')
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 { |