aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2017-09-27 14:45:55 -0400
committerGravatar John Cater <jcater@google.com>2017-09-28 08:54:49 -0400
commit42ac567ed7e68659cfd1f986fba87a6977092f6a (patch)
tree2a73e40b29f506be39ef5f37d5a05c820935bdca /src/main/java/com/google/devtools/build/lib/skyframe
parent7855b888c4de7e09d4bad0d93ad56e6acc9939ce (diff)
More narrowly specify SkyframeExecutor#prepareExecution as #detectModifiedOutputFiles and move implementation to SequencedSkyframeExecutor.
PiperOrigin-RevId: 170230031
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe')
-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
2 files changed, 22 insertions, 22 deletions
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.