diff options
author | 2017-12-20 18:03:46 -0800 | |
---|---|---|
committer | 2017-12-20 18:05:47 -0800 | |
commit | 16c36c3f15574a40e34e697f92fe86a4e44e9851 (patch) | |
tree | 1767896cc11555384bbdc0dba4bbe2fe7d5ba32e /src/main/java/com/google/devtools/build | |
parent | bfd8157819b4bf0fe2a55f54e2081e2b5d4fc848 (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.java | 5 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java | 8 |
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()) |