Skip to content

Commit 0e90fc8

Browse files
Add ProjectResolver to RemoteClusterService constructor
Follow up to work done in #131894 to make RemoteClusterService multi-project aware. This task plumbs the ProjectResolver down into the RemoteClusterService from NodeConstruction. Resolves: ES-12572
1 parent 8278266 commit 0e90fc8

File tree

6 files changed

+81
-34
lines changed

6 files changed

+81
-34
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1121,7 +1121,8 @@ public Map<String, String> queryFields() {
11211121
settingsModule.getClusterSettings(),
11221122
taskManager,
11231123
telemetryProvider.getTracer(),
1124-
nodeEnvironment.nodeId()
1124+
nodeEnvironment.nodeId(),
1125+
projectResolver
11251126
);
11261127
final SearchResponseMetrics searchResponseMetrics = new SearchResponseMetrics(telemetryProvider.getMeterRegistry());
11271128
final SearchTransportService searchTransportService = new SearchTransportService(

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

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import org.elasticsearch.tasks.TaskManager;
4343
import org.elasticsearch.telemetry.tracing.Tracer;
4444
import org.elasticsearch.threadpool.ThreadPool;
45+
import org.elasticsearch.transport.ClusterConnectionManager;
4546
import org.elasticsearch.transport.Transport;
4647
import org.elasticsearch.transport.TransportInterceptor;
4748
import org.elasticsearch.transport.TransportService;
@@ -119,9 +120,20 @@ TransportService newTransportService(
119120
ClusterSettings clusterSettings,
120121
TaskManager taskManager,
121122
Tracer tracer,
122-
String nodeId
123+
String nodeId,
124+
ProjectResolver projectResolver
123125
) {
124-
return new TransportService(settings, transport, threadPool, interceptor, localNodeFactory, clusterSettings, taskManager);
126+
return new TransportService(
127+
settings,
128+
transport,
129+
threadPool,
130+
interceptor,
131+
localNodeFactory,
132+
clusterSettings,
133+
new ClusterConnectionManager(settings, transport, threadPool.getThreadContext()),
134+
taskManager,
135+
projectResolver
136+
);
125137
}
126138

127139
HttpServerTransport newHttpTransport(PluginsService pluginsService, NetworkModule networkModule) {

server/src/main/java/org/elasticsearch/transport/RemoteClusterService.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import org.elasticsearch.cluster.metadata.ProjectId;
2525
import org.elasticsearch.cluster.node.DiscoveryNode;
2626
import org.elasticsearch.cluster.node.DiscoveryNodeRole;
27-
import org.elasticsearch.cluster.project.DefaultProjectResolver;
2827
import org.elasticsearch.cluster.project.ProjectResolver;
2928
import org.elasticsearch.common.Strings;
3029
import org.elasticsearch.common.settings.ClusterSettings;
@@ -161,15 +160,14 @@ public boolean isRemoteClusterServerEnabled() {
161160
private final RemoteClusterCredentialsManager remoteClusterCredentialsManager;
162161
private final ProjectResolver projectResolver;
163162

164-
@FixForMultiProject(description = "Inject the ProjectResolver instance.")
165-
RemoteClusterService(Settings settings, TransportService transportService) {
163+
RemoteClusterService(Settings settings, TransportService transportService, ProjectResolver projectResolver) {
166164
super(settings);
167165
this.isRemoteClusterClient = DiscoveryNode.isRemoteClusterClient(settings);
168166
this.isSearchNode = DiscoveryNode.hasRole(settings, DiscoveryNodeRole.SEARCH_ROLE);
169167
this.isStateless = DiscoveryNode.isStateless(settings);
170168
this.remoteClusterServerEnabled = REMOTE_CLUSTER_SERVER_ENABLED.get(settings);
171169
this.transportService = transportService;
172-
this.projectResolver = DefaultProjectResolver.INSTANCE;
170+
this.projectResolver = projectResolver;
173171
this.remoteClusters = projectResolver.supportsMultipleProjects()
174172
? ConcurrentCollections.newConcurrentMap()
175173
: Map.of(ProjectId.DEFAULT, ConcurrentCollections.newConcurrentMap());

server/src/main/java/org/elasticsearch/transport/TransportService.java

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import org.elasticsearch.action.ActionListenerResponseHandler;
1919
import org.elasticsearch.cluster.ClusterName;
2020
import org.elasticsearch.cluster.node.DiscoveryNode;
21+
import org.elasticsearch.cluster.project.DefaultProjectResolver;
22+
import org.elasticsearch.cluster.project.ProjectResolver;
2123
import org.elasticsearch.common.ReferenceDocs;
2224
import org.elasticsearch.common.Strings;
2325
import org.elasticsearch.common.component.AbstractLifecycleComponent;
@@ -249,12 +251,11 @@ public TransportService(
249251
transportInterceptor,
250252
localNodeFactory,
251253
clusterSettings,
252-
new ClusterConnectionManager(settings, transport, threadPool.getThreadContext()),
253254
new TaskManager(settings, threadPool, taskHeaders)
254255
);
255256
}
256257

257-
@SuppressWarnings("this-escape")
258+
// NOTE: Only for use in tests
258259
public TransportService(
259260
Settings settings,
260261
Transport transport,
@@ -264,6 +265,31 @@ public TransportService(
264265
@Nullable ClusterSettings clusterSettings,
265266
ConnectionManager connectionManager,
266267
TaskManager taskManger
268+
) {
269+
this(
270+
settings,
271+
transport,
272+
threadPool,
273+
transportInterceptor,
274+
localNodeFactory,
275+
clusterSettings,
276+
connectionManager,
277+
taskManger,
278+
DefaultProjectResolver.INSTANCE
279+
);
280+
}
281+
282+
@SuppressWarnings("this-escape")
283+
public TransportService(
284+
Settings settings,
285+
Transport transport,
286+
ThreadPool threadPool,
287+
TransportInterceptor transportInterceptor,
288+
Function<BoundTransportAddress, DiscoveryNode> localNodeFactory,
289+
@Nullable ClusterSettings clusterSettings,
290+
ConnectionManager connectionManager,
291+
TaskManager taskManger,
292+
ProjectResolver projectResolver
267293
) {
268294
this.transport = transport;
269295
transport.setSlowLogThreshold(TransportSettings.SLOW_OPERATION_THRESHOLD_SETTING.get(settings));
@@ -278,7 +304,7 @@ public TransportService(
278304
this.asyncSender = interceptor.interceptSender(this::sendRequestInternal);
279305
this.remoteClusterClient = DiscoveryNode.isRemoteClusterClient(settings);
280306
this.enableStackOverflowAvoidance = ENABLE_STACK_OVERFLOW_AVOIDANCE.get(settings);
281-
remoteClusterService = new RemoteClusterService(settings, this);
307+
remoteClusterService = new RemoteClusterService(settings, this, projectResolver);
282308
responseHandlers = transport.getResponseHandlers();
283309
if (clusterSettings != null) {
284310
clusterSettings.addSettingsUpdateConsumer(TransportSettings.TRACE_LOG_INCLUDE_SETTING, this::setTracerLogInclude);

0 commit comments

Comments
 (0)