Skip to content

Commit a8380cf

Browse files
committed
Move ProjectRoutingResolver to NodeConstruction
1 parent 884823e commit a8380cf

File tree

5 files changed

+25
-11
lines changed

5 files changed

+25
-11
lines changed

server/src/main/java/org/elasticsearch/node/NodeConstruction.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,8 @@
209209
import org.elasticsearch.search.SearchService;
210210
import org.elasticsearch.search.SearchUtils;
211211
import org.elasticsearch.search.aggregations.support.AggregationUsageService;
212+
import org.elasticsearch.search.crossproject.CrossProjectRoutingResolver;
213+
import org.elasticsearch.search.crossproject.ProjectRoutingResolver;
212214
import org.elasticsearch.shutdown.PluginShutdownService;
213215
import org.elasticsearch.snapshots.CachingSnapshotAndShardByStateMetricsService;
214216
import org.elasticsearch.snapshots.IndexMetadataRestoreTransformer;
@@ -1011,6 +1013,11 @@ public Map<String, String> queryFields() {
10111013
.create()
10121014
.orElseGet(() -> new ClusterSettingsLinkedProjectConfigService(settings, clusterService.getClusterSettings(), projectResolver));
10131015

1016+
final var projectRoutingResolver = pluginsService.loadSingletonServiceProvider(
1017+
ProjectRoutingResolver.class,
1018+
CrossProjectRoutingResolver::new
1019+
);
1020+
10141021
PluginServiceInstances pluginServices = new PluginServiceInstances(
10151022
client,
10161023
clusterService,
@@ -1035,7 +1042,8 @@ public Map<String, String> queryFields() {
10351042
projectResolver,
10361043
slowLogFieldProvider,
10371044
indexingLimits,
1038-
linkedProjectConfigService
1045+
linkedProjectConfigService,
1046+
projectRoutingResolver
10391047
);
10401048

10411049
Collection<?> pluginComponents = pluginsService.flatMap(plugin -> {
@@ -1364,6 +1372,7 @@ public Map<String, String> queryFields() {
13641372
b.bind(ShutdownPrepareService.class).toInstance(shutdownPrepareService);
13651373
b.bind(OnlinePrewarmingService.class).toInstance(onlinePrewarmingService);
13661374
b.bind(MergeMetrics.class).toInstance(mergeMetrics);
1375+
b.bind(ProjectRoutingResolver.class).toInstance(projectRoutingResolver);
13671376
});
13681377

13691378
if (ReadinessService.enabled(environment)) {

server/src/main/java/org/elasticsearch/node/PluginServiceInstances.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.elasticsearch.plugins.internal.DocumentParsingProvider;
2929
import org.elasticsearch.repositories.RepositoriesService;
3030
import org.elasticsearch.script.ScriptService;
31+
import org.elasticsearch.search.crossproject.ProjectRoutingResolver;
3132
import org.elasticsearch.tasks.TaskManager;
3233
import org.elasticsearch.telemetry.TelemetryProvider;
3334
import org.elasticsearch.threadpool.ThreadPool;
@@ -59,5 +60,6 @@ public record PluginServiceInstances(
5960
ProjectResolver projectResolver,
6061
SlowLogFieldProvider slowLogFieldProvider,
6162
IndexingPressure indexingPressure,
62-
LinkedProjectConfigService linkedProjectConfigService
63+
LinkedProjectConfigService linkedProjectConfigService,
64+
ProjectRoutingResolver projectRoutingResolver
6365
) implements Plugin.PluginServices {}

server/src/main/java/org/elasticsearch/plugins/Plugin.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.elasticsearch.plugins.internal.DocumentParsingProvider;
3737
import org.elasticsearch.repositories.RepositoriesService;
3838
import org.elasticsearch.script.ScriptService;
39+
import org.elasticsearch.search.crossproject.ProjectRoutingResolver;
3940
import org.elasticsearch.tasks.TaskManager;
4041
import org.elasticsearch.telemetry.TelemetryProvider;
4142
import org.elasticsearch.threadpool.ExecutorBuilder;
@@ -198,6 +199,9 @@ public interface PluginServices {
198199
* A service for registering for linked project configuration updates.
199200
*/
200201
LinkedProjectConfigService linkedProjectConfigService();
202+
203+
/** A resolver for project routing information */
204+
ProjectRoutingResolver projectRoutingResolver();
201205
}
202206

203207
/**

x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/Security.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@
104104
import org.elasticsearch.rest.RestStatus;
105105
import org.elasticsearch.script.ScriptService;
106106
import org.elasticsearch.search.crossproject.CrossProjectModeDecider;
107-
import org.elasticsearch.search.crossproject.CrossProjectRoutingResolver;
108107
import org.elasticsearch.search.crossproject.ProjectRoutingResolver;
109108
import org.elasticsearch.search.internal.ShardSearchRequest;
110109
import org.elasticsearch.telemetry.TelemetryProvider;
@@ -647,7 +646,6 @@ public class Security extends Plugin
647646
private final SetOnce<RemoteClusterSecurityExtension.Provider> remoteClusterSecurityExtensionProvider = new SetOnce<>();
648647
private final SetOnce<RemoteClusterSecurityExtension> remoteClusterSecurityExtension = new SetOnce<>();
649648
private final SetOnce<RemoteClusterAuthenticationService> remoteClusterAuthenticationService = new SetOnce<>();
650-
private final SetOnce<ProjectRoutingResolver> projectRoutingResolver = new SetOnce<>();
651649

652650
private final SetOnce<SecurityMigrations.Manager> migrationManager = new SetOnce<>();
653651
private final SetOnce<List<Closeable>> closableComponents = new SetOnce<>();
@@ -765,7 +763,8 @@ public Collection<?> createComponents(PluginServices services) {
765763
services.telemetryProvider(),
766764
new PersistentTasksService(services.clusterService(), services.threadPool(), services.client()),
767765
services.linkedProjectConfigService(),
768-
services.projectResolver()
766+
services.projectResolver(),
767+
services.projectRoutingResolver()
769768
);
770769
} catch (final Exception e) {
771770
throw new IllegalStateException("security initialization failed", e);
@@ -786,7 +785,8 @@ Collection<Object> createComponents(
786785
TelemetryProvider telemetryProvider,
787786
PersistentTasksService persistentTasksService,
788787
LinkedProjectConfigService linkedProjectConfigService,
789-
ProjectResolver projectResolver
788+
ProjectResolver projectResolver,
789+
ProjectRoutingResolver projectRoutingResolver
790790
) throws Exception {
791791
logger.info("Security is {}", enabled ? "enabled" : "disabled");
792792
if (enabled == false) {
@@ -1170,11 +1170,9 @@ Collection<Object> createComponents(
11701170
projectResolver,
11711171
authorizedProjectsResolver,
11721172
new CrossProjectModeDecider(settings),
1173-
projectRoutingResolver.get()
1173+
projectRoutingResolver
11741174
);
11751175

1176-
components.add(new PluginComponentBinding<>(ProjectRoutingResolver.class, projectRoutingResolver.get()));
1177-
11781176
components.add(nativeRolesStore); // used by roles actions
11791177
components.add(reservedRolesStore); // used by roles actions
11801178
components.add(allRolesStore); // for SecurityInfoTransportAction and clear roles cache
@@ -2563,7 +2561,6 @@ public void loadExtensions(ExtensionLoader loader) {
25632561
RemoteClusterSecurityExtension.Provider.class,
25642562
CrossClusterAccessSecurityExtension.Provider::new
25652563
);
2566-
loadSingletonExtensionAndSetOnce(loader, projectRoutingResolver, ProjectRoutingResolver.class, CrossProjectRoutingResolver::new);
25672564
}
25682565

25692566
private <T> void loadSingletonExtensionAndSetOnce(ExtensionLoader loader, SetOnce<T> setOnce, Class<T> clazz) {

x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityTests.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
import org.elasticsearch.rest.RestHandler;
6464
import org.elasticsearch.rest.RestRequest;
6565
import org.elasticsearch.script.ScriptService;
66+
import org.elasticsearch.search.crossproject.ProjectRoutingResolver;
6667
import org.elasticsearch.telemetry.TelemetryProvider;
6768
import org.elasticsearch.telemetry.metric.MeterRegistry;
6869
import org.elasticsearch.test.ESTestCase;
@@ -265,7 +266,8 @@ private Collection<Object> createComponentsUtil(Settings settings) throws Except
265266
TelemetryProvider.NOOP,
266267
mock(PersistentTasksService.class),
267268
StubLinkedProjectConfigService.INSTANCE,
268-
TestProjectResolvers.alwaysThrow()
269+
TestProjectResolvers.alwaysThrow(),
270+
mock(ProjectRoutingResolver.class)
269271
);
270272
}
271273

0 commit comments

Comments
 (0)