aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar Eric Fellheimer <felly@google.com>2015-05-21 23:42:17 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2015-05-22 19:59:37 +0000
commite6566da66cff3511f6dfcad5d8dfe9a1cde767a9 (patch)
tree2687378f73bf81405f4df9740548676b543c6b04 /src/main/java/com/google/devtools/build
parent53c074822d3d4275528b7dbd8cb634deb7817580 (diff)
Add a hidden flag which allows us to set the size of the legacy globbing thread pool.
-- MOS_MIGRATED_REVID=94236393
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/pkgcache/PackageCacheOptions.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java7
3 files changed, 20 insertions, 4 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 4d7b71f19b..02c7f03d1f 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
@@ -366,7 +366,7 @@ public final class PackageFactory {
globalEnv = newGlobalEnvironment();
threadPool = new ThreadPoolExecutor(100, 100, 3L, TimeUnit.SECONDS,
new LinkedBlockingQueue<Runnable>(),
- new ThreadFactoryBuilder().setNameFormat("PackageFactory %d").build());
+ new ThreadFactoryBuilder().setNameFormat("Legacy globber %d").build());
// Do not consume threads when not in use.
threadPool.allowCoreThreadTimeOut(true);
this.environmentExtensions = ImmutableList.copyOf(environmentExtensions);
@@ -388,6 +388,15 @@ public final class PackageFactory {
}
/**
+ * Sets the max number of threads to use for globbing.
+ */
+ public void setGlobbingThreads(int globbingThreads) {
+ threadPool.setCorePoolSize(globbingThreads);
+ threadPool.setMaximumPoolSize(globbingThreads);
+ }
+
+
+ /**
* Returns the static environment initialized once and shared by all packages
* created by this factory. No updates occur to this environment once created.
*/
diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/PackageCacheOptions.java b/src/main/java/com/google/devtools/build/lib/pkgcache/PackageCacheOptions.java
index 6db7cf63ec..e57fe0df61 100644
--- a/src/main/java/com/google/devtools/build/lib/pkgcache/PackageCacheOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/pkgcache/PackageCacheOptions.java
@@ -120,6 +120,12 @@ public class PackageCacheOptions extends OptionsBase {
+ "'private').")
public RuleVisibility defaultVisibility;
+ @Option(name = "legacy_globbing_threads",
+ defaultValue = "100",
+ category = "undocumented",
+ help = "Number of threads to use for glob evaluation.")
+ public int globbingThreads;
+
@Option(name = "min_pkg_count_for_ct_node_eviction",
defaultValue = "3700",
// Why is the default value 3700? As of December 2013, a medium target loads about this many
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 f2ad498afd..ca12499f6f 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
@@ -735,8 +735,8 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
*/
@VisibleForTesting // productionVisibility = Visibility.PRIVATE
public void preparePackageLoading(PathPackageLocator pkgLocator, RuleVisibility defaultVisibility,
- boolean showLoadingProgress,
- String defaultsPackageContents, UUID commandId) {
+ boolean showLoadingProgress, int globbingThreads,
+ String defaultsPackageContents, UUID commandId) {
Preconditions.checkNotNull(pkgLocator);
setActive(true);
@@ -748,6 +748,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
setPackageLocator(pkgLocator);
syscalls.set(new PerBuildSyscallCache());
+ this.pkgFactory.setGlobbingThreads(globbingThreads);
checkPreprocessorFactory();
emittedEventState.clear();
@@ -1328,7 +1329,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
preparePackageLoading(
createPackageLocator(packageCacheOptions, directories.getWorkspace(), workingDirectory),
packageCacheOptions.defaultVisibility, packageCacheOptions.showLoadingProgress,
- defaultsPackageContents, commandId);
+ packageCacheOptions.globbingThreads, defaultsPackageContents, commandId);
setDeletedPackages(ImmutableSet.copyOf(packageCacheOptions.deletedPackages));
incrementalBuildMonitor = new SkyframeIncrementalBuildMonitor();