From a4578e9d7eb057ff3aff58c02f0b19dc94f893ce Mon Sep 17 00:00:00 2001 From: Andrei Dan Date: Thu, 24 Apr 2025 16:43:49 +0100 Subject: [PATCH 1/2] Enable online prewarming for guice injection This hooks up the OnlinePrewarmingService implementation for guice injection (and enables us to lookup the implementation in ITs using the internalCluster.getInstance methods) --- .../java/org/elasticsearch/node/NodeConstruction.java | 10 +++++++++- .../org/elasticsearch/node/NodeServiceProvider.java | 7 ++----- .../main/java/org/elasticsearch/node/MockNode.java | 11 +++++------ 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/node/NodeConstruction.java b/server/src/main/java/org/elasticsearch/node/NodeConstruction.java index 7b7d2b257c424..95f88ef40b9dd 100644 --- a/server/src/main/java/org/elasticsearch/node/NodeConstruction.java +++ b/server/src/main/java/org/elasticsearch/node/NodeConstruction.java @@ -23,6 +23,8 @@ import org.elasticsearch.action.bulk.IncrementalBulkService; import org.elasticsearch.action.datastreams.autosharding.DataStreamAutoShardingService; import org.elasticsearch.action.ingest.ReservedPipelineAction; +import org.elasticsearch.action.search.OnlinePrewarmingService; +import org.elasticsearch.action.search.OnlinePrewarmingServiceProvider; import org.elasticsearch.action.search.SearchExecutionStatsCollector; import org.elasticsearch.action.search.SearchPhaseController; import org.elasticsearch.action.search.SearchTransportService; @@ -1166,6 +1168,10 @@ public Map queryFields() { final NodeMetrics nodeMetrics = new NodeMetrics(telemetryProvider.getMeterRegistry(), nodeService, metricsInterval); final IndicesMetrics indicesMetrics = new IndicesMetrics(telemetryProvider.getMeterRegistry(), indicesService, metricsInterval); + OnlinePrewarmingService onlinePrewarmingService = pluginsService.loadSingletonServiceProvider( + OnlinePrewarmingServiceProvider.class, + () -> OnlinePrewarmingServiceProvider.DEFAULT + ).create(clusterService.getSettings(), threadPool, clusterService); final SearchService searchService = serviceProvider.newSearchService( pluginsService, clusterService, @@ -1176,7 +1182,8 @@ public Map queryFields() { searchModule.getFetchPhase(), circuitBreakerService, systemIndices.getExecutorSelector(), - telemetryProvider.getTracer() + telemetryProvider.getTracer(), + onlinePrewarmingService ); final ShutdownPrepareService shutdownPrepareService = new ShutdownPrepareService(settings, httpServerTransport, terminationHandler); @@ -1270,6 +1277,7 @@ public Map queryFields() { b.bind(DataStreamAutoShardingService.class).toInstance(dataStreamAutoShardingService); b.bind(FailureStoreMetrics.class).toInstance(failureStoreMetrics); b.bind(ShutdownPrepareService.class).toInstance(shutdownPrepareService); + b.bind(OnlinePrewarmingService.class).toInstance(onlinePrewarmingService); }); if (ReadinessService.enabled(environment)) { diff --git a/server/src/main/java/org/elasticsearch/node/NodeServiceProvider.java b/server/src/main/java/org/elasticsearch/node/NodeServiceProvider.java index cd9df0162c3d4..2fdd855ec412e 100644 --- a/server/src/main/java/org/elasticsearch/node/NodeServiceProvider.java +++ b/server/src/main/java/org/elasticsearch/node/NodeServiceProvider.java @@ -123,12 +123,9 @@ SearchService newSearchService( FetchPhase fetchPhase, CircuitBreakerService circuitBreakerService, ExecutorSelector executorSelector, - Tracer tracer + Tracer tracer, + OnlinePrewarmingService onlinePrewarmingService ) { - OnlinePrewarmingService onlinePrewarmingService = pluginsService.loadSingletonServiceProvider( - OnlinePrewarmingServiceProvider.class, - () -> OnlinePrewarmingServiceProvider.DEFAULT - ).create(clusterService.getSettings(), threadPool, clusterService); return new SearchService( clusterService, indicesService, diff --git a/test/framework/src/main/java/org/elasticsearch/node/MockNode.java b/test/framework/src/main/java/org/elasticsearch/node/MockNode.java index 1ca5c42245cb4..c8f6e11123458 100644 --- a/test/framework/src/main/java/org/elasticsearch/node/MockNode.java +++ b/test/framework/src/main/java/org/elasticsearch/node/MockNode.java @@ -103,7 +103,8 @@ SearchService newSearchService( FetchPhase fetchPhase, CircuitBreakerService circuitBreakerService, ExecutorSelector executorSelector, - Tracer tracer + Tracer tracer, + OnlinePrewarmingService onlinePrewarmingService ) { if (pluginsService.filterPlugins(MockSearchService.TestPlugin.class).findAny().isEmpty()) { return super.newSearchService( @@ -116,13 +117,11 @@ SearchService newSearchService( fetchPhase, circuitBreakerService, executorSelector, - tracer + tracer, + onlinePrewarmingService ); } - OnlinePrewarmingService onlinePrewarmingService = pluginsService.loadSingletonServiceProvider( - OnlinePrewarmingServiceProvider.class, - () -> OnlinePrewarmingServiceProvider.DEFAULT - ).create(clusterService.getSettings(), threadPool, clusterService); + return new MockSearchService( clusterService, indicesService, From ebc3a7e1a6f5cc30b7529c5243430ba72875bedd Mon Sep 17 00:00:00 2001 From: Andrei Dan Date: Thu, 24 Apr 2025 16:50:55 +0100 Subject: [PATCH 2/2] spotless --- .../main/java/org/elasticsearch/node/NodeServiceProvider.java | 1 - .../framework/src/main/java/org/elasticsearch/node/MockNode.java | 1 - 2 files changed, 2 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/node/NodeServiceProvider.java b/server/src/main/java/org/elasticsearch/node/NodeServiceProvider.java index 2fdd855ec412e..1c3f19b20b4dc 100644 --- a/server/src/main/java/org/elasticsearch/node/NodeServiceProvider.java +++ b/server/src/main/java/org/elasticsearch/node/NodeServiceProvider.java @@ -10,7 +10,6 @@ package org.elasticsearch.node; import org.elasticsearch.action.search.OnlinePrewarmingService; -import org.elasticsearch.action.search.OnlinePrewarmingServiceProvider; import org.elasticsearch.client.internal.node.NodeClient; import org.elasticsearch.cluster.ClusterInfoService; import org.elasticsearch.cluster.InternalClusterInfoService; diff --git a/test/framework/src/main/java/org/elasticsearch/node/MockNode.java b/test/framework/src/main/java/org/elasticsearch/node/MockNode.java index c8f6e11123458..9a99b5c881941 100644 --- a/test/framework/src/main/java/org/elasticsearch/node/MockNode.java +++ b/test/framework/src/main/java/org/elasticsearch/node/MockNode.java @@ -10,7 +10,6 @@ package org.elasticsearch.node; import org.elasticsearch.action.search.OnlinePrewarmingService; -import org.elasticsearch.action.search.OnlinePrewarmingServiceProvider; import org.elasticsearch.client.internal.node.NodeClient; import org.elasticsearch.cluster.ClusterInfoService; import org.elasticsearch.cluster.MockInternalClusterInfoService;