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..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; @@ -123,12 +122,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..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; @@ -103,7 +102,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 +116,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,