aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar carmi <carmi@google.com>2017-12-20 18:03:46 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-12-20 18:05:47 -0800
commit16c36c3f15574a40e34e697f92fe86a4e44e9851 (patch)
tree1767896cc11555384bbdc0dba4bbe2fe7d5ba32e /src/main/java/com/google/devtools/build
parentbfd8157819b4bf0fe2a55f54e2081e2b5d4fc848 (diff)
Enable syscall cache and eager sub-directory globbing in AbstractPackageLoader.
RELNOTES: None PiperOrigin-RevId: 179757650
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java8
2 files changed, 13 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
index f7c28c8587..d652327fd7 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
@@ -433,6 +433,11 @@ public final class PackageFactory {
threadPool.setMaximumPoolSize(globbingThreads);
}
+ /**
+ * Sets the number of directories to eagerly traverse on the first glob for a given package, in
+ * order to warm the filesystem. -1 means do no eager traversal. See {@code
+ * PackageCacheOptions#maxDirectoriesToEagerlyVisitInGlobbing}.
+ */
public void setMaxDirectoriesToEagerlyVisitInGlobbing(
int maxDirectoriesToEagerlyVisitInGlobbing) {
this.maxDirectoriesToEagerlyVisitInGlobbing = maxDirectoriesToEagerlyVisitInGlobbing;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
index a10deeb595..6d465784ae 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
@@ -60,6 +60,7 @@ import com.google.devtools.build.lib.skyframe.PackageFunction.CacheEntryWithGlob
import com.google.devtools.build.lib.skyframe.PackageLookupFunction;
import com.google.devtools.build.lib.skyframe.PackageLookupFunction.CrossRepositoryLabelViolationStrategy;
import com.google.devtools.build.lib.skyframe.PackageValue;
+import com.google.devtools.build.lib.skyframe.PerBuildSyscallCache;
import com.google.devtools.build.lib.skyframe.PrecomputedFunction;
import com.google.devtools.build.lib.skyframe.PrecomputedValue;
import com.google.devtools.build.lib.skyframe.SkyFunctions;
@@ -102,6 +103,10 @@ import javax.annotation.Nullable;
* caching.
*/
public abstract class AbstractPackageLoader implements PackageLoader {
+
+ // See {@link PackageFactory.setMaxDirectoriesToEagerlyVisitInGlobbing}.
+ private static final int MAX_DIRECTORIES_TO_EAGERLY_VISIT_IN_GLOBBING = 3000;
+
private final ImmutableDiff preinjectedDiff;
private final Differencer preinjectedDifferencer = new Differencer() {
@Override
@@ -359,6 +364,9 @@ public abstract class AbstractPackageLoader implements PackageLoader {
getName(),
Package.Builder.DefaultHelper.INSTANCE);
pkgFactory.setGlobbingThreads(legacyGlobbingThreads);
+ pkgFactory.setSyscalls(new AtomicReference<>(PerBuildSyscallCache.newBuilder().build()));
+ pkgFactory.setMaxDirectoriesToEagerlyVisitInGlobbing(
+ MAX_DIRECTORIES_TO_EAGERLY_VISIT_IN_GLOBBING);
ImmutableMap.Builder<SkyFunctionName, SkyFunction> builder = ImmutableMap.builder();
builder
.put(SkyFunctions.PRECOMPUTED, new PrecomputedFunction())