diff options
3 files changed, 23 insertions, 23 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java b/src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java index f80da14e7a..5c74a43742 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java @@ -107,7 +107,7 @@ public class SkyframeBuilder implements Builder { @Nullable Range<Long> lastExecutionTimeRange, TopLevelArtifactContext topLevelArtifactContext) throws BuildFailedException, AbruptExitException, TestExecException, InterruptedException { - skyframeExecutor.prepareExecution(modifiedOutputFiles, lastExecutionTimeRange); + skyframeExecutor.detectModifiedOutputFiles(modifiedOutputFiles, lastExecutionTimeRange); skyframeExecutor.configureActionExecutor(fileCache, actionInputPrefetcher); // Note that executionProgressReceiver accesses builtTargets concurrently (after wrapping in a // synchronized collection), so unsynchronized access to this variable is unsafe while it runs. diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java index 9cac6d59b8..7d546d5991 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java @@ -23,6 +23,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import com.google.common.collect.Range; import com.google.common.collect.Sets; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.BuildView.Options; @@ -53,6 +54,7 @@ import com.google.devtools.build.lib.util.Pair; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.util.ResourceUsage; import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor; +import com.google.devtools.build.lib.vfs.BatchStat; import com.google.devtools.build.lib.vfs.ModifiedFileSet; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; @@ -82,6 +84,7 @@ import java.util.Set; import java.util.UUID; import java.util.concurrent.Callable; import java.util.logging.Logger; +import javax.annotation.Nullable; /** * A SkyframeExecutor that implicitly assumes that builds can be done incrementally from the most @@ -534,8 +537,21 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { } @Override - protected void invalidateDirtyActions(Iterable<SkyKey> dirtyActionValues) { - recordingDiffer.invalidate(dirtyActionValues); + public void detectModifiedOutputFiles( + ModifiedFileSet modifiedOutputFiles, @Nullable Range<Long> lastExecutionTimeRange) + throws AbruptExitException, InterruptedException { + + // Detect external modifications in the output tree. + FilesystemValueChecker fsvc = + new FilesystemValueChecker(Preconditions.checkNotNull(tsgm.get()), lastExecutionTimeRange); + BatchStat batchStatter = outputService == null ? null : outputService.getBatchStatter(); + recordingDiffer.invalidate( + fsvc.getDirtyActionValues( + memoizingEvaluator.getValues(), batchStatter, modifiedOutputFiles)); + modifiedFiles += fsvc.getNumberOfModifiedOutputFiles(); + outputDirtyFiles += fsvc.getNumberOfModifiedOutputFiles(); + modifiedFilesDuringPreviousBuild += fsvc.getNumberOfModifiedOutputFilesDuringPreviousBuild(); + informAboutNumberOfModifiedFiles(); } private static ImmutableSet<SkyFunctionName> LOADING_TYPES = diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java index e8c1773c99..97a10780fc 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java @@ -124,7 +124,6 @@ import com.google.devtools.build.lib.util.AbruptExitException; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.util.ResourceUsage; import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor; -import com.google.devtools.build.lib.vfs.BatchStat; import com.google.devtools.build.lib.vfs.Dirent; import com.google.devtools.build.lib.vfs.FileSystem; import com.google.devtools.build.lib.vfs.ModifiedFileSet; @@ -187,8 +186,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { private final WorkspaceStatusAction.Factory workspaceStatusActionFactory; private final BlazeDirectories directories; protected final ExternalFilesHelper externalFilesHelper; - @Nullable - private OutputService outputService; + @Nullable protected OutputService outputService; // TODO(bazel-team): Figure out how to handle value builders that block internally. Blocking // operations may need to be handled in another (bigger?) thread pool. Also, we should detect @@ -1881,23 +1879,9 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { this.statusReporterRef.set(statusReporter); } - public void prepareExecution(ModifiedFileSet modifiedOutputFiles, - @Nullable Range<Long> lastExecutionTimeRange) - throws AbruptExitException, InterruptedException { - - // Detect external modifications in the output tree. - FilesystemValueChecker fsvc = - new FilesystemValueChecker(Preconditions.checkNotNull(tsgm.get()), lastExecutionTimeRange); - BatchStat batchStatter = outputService == null ? null : outputService.getBatchStatter(); - invalidateDirtyActions(fsvc.getDirtyActionValues(memoizingEvaluator.getValues(), - batchStatter, modifiedOutputFiles)); - modifiedFiles += fsvc.getNumberOfModifiedOutputFiles(); - outputDirtyFiles += fsvc.getNumberOfModifiedOutputFiles(); - modifiedFilesDuringPreviousBuild += fsvc.getNumberOfModifiedOutputFilesDuringPreviousBuild(); - informAboutNumberOfModifiedFiles(); - } - - protected abstract void invalidateDirtyActions(Iterable<SkyKey> dirtyActionValues); + public abstract void detectModifiedOutputFiles( + ModifiedFileSet modifiedOutputFiles, @Nullable Range<Long> lastExecutionTimeRange) + throws AbruptExitException, InterruptedException; /** * Mark dirty values for deletion if they've been dirty for longer than N versions. |