aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/SkyframeBuilder.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java20
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java24
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.