From d736ea37877bb6fc901bf88dcb3033cda08246e8 Mon Sep 17 00:00:00 2001 From: Mariusz Jozala Date: Wed, 20 Aug 2025 11:09:17 +0200 Subject: [PATCH 1/2] Set default processor allocation for test clusters Setting the number of processors available for node to adequately size thread pools. Related to #130612 --- .../gradle/internal/InternalTestClustersPlugin.java | 10 +++++++--- .../test/cluster/local/DefaultSettingsProvider.java | 4 ++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java index f1b96016286df..dda0f3b3ca015 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java @@ -34,11 +34,15 @@ public void apply(Project project) { || buildParams.getBwcVersions().unreleasedInfo(version) == null ); + NamedDomainObjectContainer testClusters = (NamedDomainObjectContainer) project + .getExtensions() + .getByName(TestClustersPlugin.EXTENSION_NAME); if (shouldConfigureTestClustersWithOneProcessor()) { - NamedDomainObjectContainer testClusters = (NamedDomainObjectContainer) project - .getExtensions() - .getByName(TestClustersPlugin.EXTENSION_NAME); testClusters.configureEach(elasticsearchCluster -> elasticsearchCluster.setting("node.processors", "1")); + } else { + // Limit the number of allocated processors for all nodes in the cluster by default. + // This is to ensure that the tests run consistently across different environments. + testClusters.configureEach(elasticsearchCluster -> elasticsearchCluster.setting("node.processors", "2")); } } diff --git a/test/test-clusters/src/main/java/org/elasticsearch/test/cluster/local/DefaultSettingsProvider.java b/test/test-clusters/src/main/java/org/elasticsearch/test/cluster/local/DefaultSettingsProvider.java index b53f4ece46134..2fdf0df41736a 100644 --- a/test/test-clusters/src/main/java/org/elasticsearch/test/cluster/local/DefaultSettingsProvider.java +++ b/test/test-clusters/src/main/java/org/elasticsearch/test/cluster/local/DefaultSettingsProvider.java @@ -42,6 +42,10 @@ public Map get(LocalNodeSpec nodeSpec) { } } + // Limit the number of allocated processors for all nodes in the cluster by default. + // This is to ensure that the tests run consistently across different environments. + settings.put("node.processors", "2"); + // Default the watermarks to absurdly low to prevent the tests from failing on nodes without enough disk space settings.put("cluster.routing.allocation.disk.watermark.low", "1b"); settings.put("cluster.routing.allocation.disk.watermark.high", "1b"); From b36bf483e49eb9a1589652e8a22b474bfaee94b6 Mon Sep 17 00:00:00 2001 From: Mariusz Jozala Date: Wed, 20 Aug 2025 12:23:46 +0200 Subject: [PATCH 2/2] Refactor processor allocation logic for test clusters --- .../gradle/internal/InternalTestClustersPlugin.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java index dda0f3b3ca015..2a2e1ea28d1ec 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java @@ -37,13 +37,10 @@ public void apply(Project project) { NamedDomainObjectContainer testClusters = (NamedDomainObjectContainer) project .getExtensions() .getByName(TestClustersPlugin.EXTENSION_NAME); - if (shouldConfigureTestClustersWithOneProcessor()) { - testClusters.configureEach(elasticsearchCluster -> elasticsearchCluster.setting("node.processors", "1")); - } else { - // Limit the number of allocated processors for all nodes in the cluster by default. - // This is to ensure that the tests run consistently across different environments. - testClusters.configureEach(elasticsearchCluster -> elasticsearchCluster.setting("node.processors", "2")); - } + // Limit the number of allocated processors for all nodes to 2 in the cluster by default. + // This is to ensure that the tests run consistently across different environments. + String processorCount = shouldConfigureTestClustersWithOneProcessor() ? "1" : "2"; + testClusters.configureEach(elasticsearchCluster -> elasticsearchCluster.setting("node.processors", processorCount)); } private boolean shouldConfigureTestClustersWithOneProcessor() {