From 49c20aaccb76769d50f3abb57372b3e9030513a4 Mon Sep 17 00:00:00 2001 From: Philipp Wollermann Date: Thu, 25 Aug 2016 12:59:52 +0000 Subject: Add a framework for prefetching input files (in case they come from remote file systems). -- MOS_MIGRATED_REVID=131280794 --- .../devtools/build/lib/runtime/CommandEnvironment.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java') diff --git a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java index c3fec79170..9786f0f1e7 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java @@ -29,10 +29,10 @@ import com.google.devtools.build.lib.analysis.SkyframePackageRootResolver; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; import com.google.devtools.build.lib.analysis.config.BuildOptions; -import com.google.devtools.build.lib.analysis.config.DefaultsPackage; import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.events.Reporter; +import com.google.devtools.build.lib.exec.ActionInputPrefetcher; import com.google.devtools.build.lib.exec.OutputService; import com.google.devtools.build.lib.packages.NoSuchThingException; import com.google.devtools.build.lib.packages.Target; @@ -54,7 +54,6 @@ import com.google.devtools.common.options.OptionPriority; import com.google.devtools.common.options.OptionsParser; import com.google.devtools.common.options.OptionsParsingException; import com.google.devtools.common.options.OptionsProvider; - import java.io.IOException; import java.util.Collection; import java.util.Collections; @@ -86,6 +85,7 @@ public final class CommandEnvironment { private PathFragment relativeWorkingDirectory = PathFragment.EMPTY_FRAGMENT; private long commandStartTime; private OutputService outputService; + private ImmutableList actionInputPrefetchers = ImmutableList.of(); private Path workingDirectory; private AtomicReference pendingException = new AtomicReference<>(); @@ -308,6 +308,10 @@ public final class CommandEnvironment { return outputService; } + public ImmutableList getActionInputPrefetchers() { + return actionInputPrefetchers; + } + public ActionCache getPersistentActionCache() throws IOException { return workspace.getPersistentActionCache(reporter); } @@ -441,6 +445,7 @@ public final class CommandEnvironment { outputService = null; BlazeModule outputModule = null; + ImmutableList.Builder prefetchersBuilder = ImmutableList.builder(); for (BlazeModule module : runtime.getBlazeModules()) { OutputService moduleService = module.getOutputService(); if (moduleService != null) { @@ -452,7 +457,13 @@ public final class CommandEnvironment { outputService = moduleService; outputModule = module; } + + ActionInputPrefetcher actionInputPrefetcher = module.getPrefetcher(); + if (actionInputPrefetcher != null) { + prefetchersBuilder.add(actionInputPrefetcher); + } } + actionInputPrefetchers = prefetchersBuilder.build(); SkyframeExecutor skyframeExecutor = getSkyframeExecutor(); skyframeExecutor.setOutputService(outputService); -- cgit v1.2.3