Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ public List<RestHandler> getRestHandlers(
) {
Settings settings = restHandlersServices.settings();
return Arrays.asList(
new RestSearchTemplateAction(clusterSupportsFeature, settings),
new RestMultiSearchTemplateAction(settings),
new RestSearchTemplateAction(clusterSupportsFeature, restHandlersServices.crossProjectModeDecider()),
new RestMultiSearchTemplateAction(settings, restHandlersServices.crossProjectModeDecider()),
new RestRenderSearchTemplateAction()
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ public class RestMultiSearchTemplateAction extends BaseRestHandler {
private final boolean allowExplicitIndex;
private final CrossProjectModeDecider crossProjectModeDecider;

public RestMultiSearchTemplateAction(Settings settings) {
public RestMultiSearchTemplateAction(Settings settings, CrossProjectModeDecider crossProjectModeDecider) {
this.allowExplicitIndex = MULTI_ALLOW_EXPLICIT_INDEX.get(settings);
this.crossProjectModeDecider = new CrossProjectModeDecider(settings);
this.crossProjectModeDecider = crossProjectModeDecider;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@

import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.client.internal.node.NodeClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.features.NodeFeature;
import org.elasticsearch.rest.BaseRestHandler;
import org.elasticsearch.rest.RestRequest;
Expand Down Expand Up @@ -41,9 +40,9 @@ public class RestSearchTemplateAction extends BaseRestHandler {
private final Predicate<NodeFeature> clusterSupportsFeature;
private final CrossProjectModeDecider crossProjectModeDecider;

public RestSearchTemplateAction(Predicate<NodeFeature> clusterSupportsFeature, Settings settings) {
public RestSearchTemplateAction(Predicate<NodeFeature> clusterSupportsFeature, CrossProjectModeDecider crossProjectModeDecider) {
this.clusterSupportsFeature = clusterSupportsFeature;
this.crossProjectModeDecider = new CrossProjectModeDecider(settings);
this.crossProjectModeDecider = crossProjectModeDecider;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.elasticsearch.rest.RestRequest;
import org.elasticsearch.script.ScriptType;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.crossproject.CrossProjectModeDecider;
import org.elasticsearch.test.ESTestCase;
import org.elasticsearch.test.StreamsUtils;
import org.elasticsearch.test.rest.FakeRestRequest;
Expand All @@ -36,7 +37,10 @@ public void testParseRequest() throws Exception {
RestRequest restRequest = new FakeRestRequest.Builder(xContentRegistry()).withContent(new BytesArray(data), XContentType.JSON)
.build();

MultiSearchTemplateRequest request = new RestMultiSearchTemplateAction(Settings.EMPTY).parseRequest(restRequest, true);
MultiSearchTemplateRequest request = new RestMultiSearchTemplateAction(Settings.EMPTY, CrossProjectModeDecider.NOOP).parseRequest(
restRequest,
true
);

assertThat(request.requests().size(), equalTo(3));
assertThat(request.requests().get(0).getRequest().indices()[0], equalTo("test0"));
Expand Down Expand Up @@ -74,7 +78,10 @@ public void testParseWithCarriageReturn() throws Exception {
RestRequest restRequest = new FakeRestRequest.Builder(xContentRegistry()).withContent(new BytesArray(content), XContentType.JSON)
.build();

MultiSearchTemplateRequest request = new RestMultiSearchTemplateAction(Settings.EMPTY).parseRequest(restRequest, true);
MultiSearchTemplateRequest request = new RestMultiSearchTemplateAction(Settings.EMPTY, CrossProjectModeDecider.NOOP).parseRequest(
restRequest,
true
);

assertThat(request.requests().size(), equalTo(1));
assertThat(request.requests().get(0).getRequest().indices()[0], equalTo("test0"));
Expand Down Expand Up @@ -126,7 +133,10 @@ public void testMultiSearchTemplateToJson() throws Exception {
// Deserialize the request
RestRequest restRequest = new FakeRestRequest.Builder(xContentRegistry()).withContent(new BytesArray(serialized), XContentType.JSON)
.build();
MultiSearchTemplateRequest deser = new RestMultiSearchTemplateAction(Settings.EMPTY).parseRequest(restRequest, true);
MultiSearchTemplateRequest deser = new RestMultiSearchTemplateAction(Settings.EMPTY, CrossProjectModeDecider.NOOP).parseRequest(
restRequest,
true
);

// For object equality purposes need to set the search requests' source to non-null
for (SearchTemplateRequest str : deser.requests()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ public List<RestHandler> getRestHandlers(
Predicate<NodeFeature> clusterSupportsFeature
) {
List<RestHandler> handlers = new ArrayList<>();
handlers.add(new PainlessExecuteAction.RestAction(restHandlersServices.settings()));
handlers.add(new PainlessExecuteAction.RestAction(restHandlersServices.crossProjectModeDecider()));
handlers.add(new PainlessContextAction.RestAction());
return handlers;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@
import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.common.io.stream.Writeable;
import org.elasticsearch.common.network.NetworkAddress;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.common.xcontent.LoggingDeprecationHandler;
import org.elasticsearch.common.xcontent.XContentHelper;
Expand Down Expand Up @@ -896,8 +895,8 @@ private static Response prepareRamIndex(
public static class RestAction extends BaseRestHandler {
private final CrossProjectModeDecider crossProjectModeDecider;

public RestAction(Settings settings) {
this.crossProjectModeDecider = new CrossProjectModeDecider(settings);
public RestAction(CrossProjectModeDecider crossProjectModeDecider) {
this.crossProjectModeDecider = crossProjectModeDecider;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public List<RestHandler> getRestHandlers(
) {
Settings settings = restHandlersServices.settings();
return Arrays.asList(
new RestReindexAction(clusterSupportsFeature, settings),
new RestReindexAction(clusterSupportsFeature, restHandlersServices.crossProjectModeDecider()),
new RestUpdateByQueryAction(clusterSupportsFeature),
new RestDeleteByQueryAction(clusterSupportsFeature),
new RestUpdateAndDeleteByQueryRethrottleAction(nodesInCluster),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.support.IndicesOptions;
import org.elasticsearch.client.internal.node.NodeClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.features.NodeFeature;
import org.elasticsearch.index.reindex.ReindexAction;
import org.elasticsearch.index.reindex.ReindexRequest;
Expand Down Expand Up @@ -44,10 +43,10 @@ public class RestReindexAction extends AbstractBaseReindexRestHandler<ReindexReq
private final Predicate<NodeFeature> clusterSupportsFeature;
private final CrossProjectModeDecider crossProjectModeDecider;

public RestReindexAction(Predicate<NodeFeature> clusterSupportsFeature, Settings settings) {
public RestReindexAction(Predicate<NodeFeature> clusterSupportsFeature, CrossProjectModeDecider crossProjectModeDecider) {
super(ReindexAction.INSTANCE);
this.clusterSupportsFeature = clusterSupportsFeature;
this.crossProjectModeDecider = new CrossProjectModeDecider(settings);
this.crossProjectModeDecider = crossProjectModeDecider;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@

import org.elasticsearch.common.bytes.BytesArray;
import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.XContentHelper;
import org.elasticsearch.index.reindex.AbstractBulkByScrollRequest;
import org.elasticsearch.index.reindex.ReindexRequest;
import org.elasticsearch.rest.RestRequest;
import org.elasticsearch.search.crossproject.CrossProjectModeDecider;
import org.elasticsearch.test.rest.FakeRestRequest;
import org.elasticsearch.test.rest.RestActionTestCase;
import org.elasticsearch.xcontent.XContentBuilder;
Expand Down Expand Up @@ -45,7 +45,7 @@ public class RestReindexActionTests extends RestActionTestCase {
public void setUpAction() {
action = new RestReindexAction(
nf -> nf.equals(ReindexPlugin.RELOCATE_ON_SHUTDOWN_NODE_FEATURE) && relocateOnShutdownFeatureEnabled,
Settings.EMPTY
CrossProjectModeDecider.NOOP
);
controller().registerHandler(action);
}
Expand Down
25 changes: 17 additions & 8 deletions server/src/main/java/org/elasticsearch/action/ActionModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -408,6 +408,7 @@
import org.elasticsearch.rest.action.synonyms.RestGetSynonymsSetsAction;
import org.elasticsearch.rest.action.synonyms.RestPutSynonymRuleAction;
import org.elasticsearch.rest.action.synonyms.RestPutSynonymsAction;
import org.elasticsearch.search.crossproject.CrossProjectModeDecider;
import org.elasticsearch.snapshots.TransportUpdateSnapshotStatusAction;
import org.elasticsearch.tasks.Task;
import org.elasticsearch.telemetry.TelemetryProvider;
Expand Down Expand Up @@ -450,6 +451,7 @@ public class ActionModule extends AbstractModule {
private final ActionFilters actionFilters;
private final IncrementalBulkService bulkService;
private final ProjectResolver projectResolver;
private final CrossProjectModeDecider crossProjectModeDecider;
private final AutoCreateIndex autoCreateIndex;
private final DestructiveOperations destructiveOperations;
private final RestController restController;
Expand Down Expand Up @@ -479,6 +481,7 @@ public ActionModule(
List<ReservedProjectStateHandler<?>> reservedProjectStateHandlers,
RestExtension restExtension,
IncrementalBulkService bulkService,
CrossProjectModeDecider crossProjectModeDecider,
ProjectResolver projectResolver
) {
this.settings = env.settings();
Expand All @@ -489,6 +492,7 @@ public ActionModule(
actionFilters = setupActionFilters(actionPlugins);
this.bulkService = bulkService;
this.projectResolver = projectResolver;
this.crossProjectModeDecider = crossProjectModeDecider;
autoCreateIndex = new AutoCreateIndex(settings, clusterSettings, indexNameExpressionResolver, systemIndices);
destructiveOperations = new DestructiveOperations(settings, clusterSettings);
Set<RestHeaderDefinition> headers = Stream.concat(
Expand Down Expand Up @@ -927,7 +931,7 @@ public void initRestHandlers(Supplier<DiscoveryNodes> nodesInCluster, Predicate<
registerHandler.accept(new RestForceMergeAction());
registerHandler.accept(new RestClearIndicesCacheAction());
registerHandler.accept(new RestResolveClusterAction());
registerHandler.accept(new RestResolveIndexAction(settings));
registerHandler.accept(new RestResolveIndexAction(crossProjectModeDecider));

registerHandler.accept(new RestIndexAction(clusterService, projectResolver));
registerHandler.accept(new CreateHandler(clusterService, projectResolver));
Expand All @@ -936,18 +940,22 @@ public void initRestHandlers(Supplier<DiscoveryNodes> nodesInCluster, Predicate<
registerHandler.accept(new RestGetSourceAction());
registerHandler.accept(new RestMultiGetAction(settings));
registerHandler.accept(new RestDeleteAction());
registerHandler.accept(new RestCountAction(settings));
registerHandler.accept(new RestCountAction(crossProjectModeDecider));
registerHandler.accept(new RestTermVectorsAction());
registerHandler.accept(new RestMultiTermVectorsAction());
registerHandler.accept(new RestBulkAction(settings, clusterSettings, bulkService));
registerHandler.accept(new RestUpdateAction());

registerHandler.accept(new RestSearchAction(restController.getSearchUsageHolder(), clusterSupportsFeature, settings));
registerHandler.accept(
new RestSearchAction(restController.getSearchUsageHolder(), clusterSupportsFeature, crossProjectModeDecider)
);
registerHandler.accept(new RestSearchScrollAction());
registerHandler.accept(new RestClearScrollAction());
registerHandler.accept(new RestOpenPointInTimeAction(settings));
registerHandler.accept(new RestOpenPointInTimeAction(crossProjectModeDecider));
registerHandler.accept(new RestClosePointInTimeAction());
registerHandler.accept(new RestMultiSearchAction(settings, restController.getSearchUsageHolder(), clusterSupportsFeature));
registerHandler.accept(
new RestMultiSearchAction(settings, restController.getSearchUsageHolder(), clusterSupportsFeature, crossProjectModeDecider)
);
registerHandler.accept(new RestKnnSearchAction());

registerHandler.accept(new RestValidateQueryAction());
Expand All @@ -965,7 +973,7 @@ public void initRestHandlers(Supplier<DiscoveryNodes> nodesInCluster, Predicate<
registerHandler.accept(new RestGetScriptContextAction());
registerHandler.accept(new RestGetScriptLanguageAction());

registerHandler.accept(new RestFieldCapabilitiesAction(settings));
registerHandler.accept(new RestFieldCapabilitiesAction(crossProjectModeDecider));

// Tasks API
registerHandler.accept(new RestListTasksAction(nodesInCluster));
Expand Down Expand Up @@ -993,7 +1001,7 @@ public void initRestHandlers(Supplier<DiscoveryNodes> nodesInCluster, Predicate<
registerHandler.accept(new RestIndicesAction(projectResolver));
registerHandler.accept(new RestSegmentsAction());
// Fully qualified to prevent interference with rest.action.count.RestCountAction
registerHandler.accept(new org.elasticsearch.rest.action.cat.RestCountAction(settings));
registerHandler.accept(new org.elasticsearch.rest.action.cat.RestCountAction(crossProjectModeDecider));
// Fully qualified to prevent interference with rest.action.indices.RestRecoveryAction
registerHandler.accept(new RestCatRecoveryAction());
registerHandler.accept(new RestHealthAction());
Expand All @@ -1019,7 +1027,8 @@ public void initRestHandlers(Supplier<DiscoveryNodes> nodesInCluster, Predicate<
ActionPlugin.RestHandlersServices restHandlersServices = new ActionPlugin.RestHandlersServices(
settings,
restController,
projectResolver
projectResolver,
crossProjectModeDecider
);

for (ActionPlugin plugin : actionPlugins) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.common.io.stream.Writeable;
import org.elasticsearch.common.regex.Regex;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.util.concurrent.CountDown;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.core.Nullable;
Expand Down Expand Up @@ -597,15 +596,15 @@ public TransportAction(
ClusterService clusterService,
ActionFilters actionFilters,
ProjectResolver projectResolver,
Settings settings,
IndexNameExpressionResolver indexNameExpressionResolver
IndexNameExpressionResolver indexNameExpressionResolver,
CrossProjectModeDecider crossProjectModeDecider
) {
super(NAME, transportService, actionFilters, Request::new, EsExecutors.DIRECT_EXECUTOR_SERVICE);
this.clusterService = clusterService;
this.remoteClusterService = transportService.getRemoteClusterService();
this.projectResolver = projectResolver;
this.indexNameExpressionResolver = indexNameExpressionResolver;
this.crossProjectModeDecider = new CrossProjectModeDecider(settings);
this.crossProjectModeDecider = crossProjectModeDecider;
this.ccsCheckCompatibility = SearchService.CCS_VERSION_CHECK_SETTING.get(clusterService.getSettings());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,8 @@ public TransportFieldCapabilitiesAction(
ActionFilters actionFilters,
IndicesService indicesService,
ProjectResolver projectResolver,
IndexNameExpressionResolver indexNameExpressionResolver
IndexNameExpressionResolver indexNameExpressionResolver,
CrossProjectModeDecider crossProjectModeDecider
) {
// TODO replace DIRECT_EXECUTOR_SERVICE when removing workaround for https://github.com/elastic/elasticsearch/issues/97916
super(NAME, transportService, actionFilters, FieldCapabilitiesRequest::new, EsExecutors.DIRECT_EXECUTOR_SERVICE);
Expand All @@ -142,7 +143,7 @@ public TransportFieldCapabilitiesAction(
this.ccsCheckCompatibility = SearchService.CCS_VERSION_CHECK_SETTING.get(clusterService.getSettings());
this.threadPool = threadPool;
this.forceConnectTimeoutSecs = clusterService.getSettings().getAsTime("search.ccs.force_connect_timeout", null);
this.crossProjectModeDecider = new CrossProjectModeDecider(clusterService.getSettings());
this.crossProjectModeDecider = crossProjectModeDecider;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import org.elasticsearch.action.support.IndicesOptions;
import org.elasticsearch.client.internal.node.NodeClient;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.core.TimeValue;
import org.elasticsearch.rest.BaseRestHandler;
import org.elasticsearch.rest.RestRequest;
Expand All @@ -34,8 +33,8 @@ public class RestOpenPointInTimeAction extends BaseRestHandler {

private final CrossProjectModeDecider crossProjectModeDecider;

public RestOpenPointInTimeAction(Settings settings) {
this.crossProjectModeDecider = new CrossProjectModeDecider(settings);
public RestOpenPointInTimeAction(CrossProjectModeDecider crossProjectModeDecider) {
this.crossProjectModeDecider = crossProjectModeDecider;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,6 @@ public class TransportOpenPointInTimeAction extends HandledTransportAction<OpenP
private final NamedWriteableRegistry namedWriteableRegistry;
private final TransportService transportService;
private final SearchService searchService;
private final ClusterService clusterService;
private final SearchResponseMetrics searchResponseMetrics;
private final CrossProjectModeDecider crossProjectModeDecider;
private final TimeValue forceConnectTimeoutSecs;
Expand All @@ -97,17 +96,17 @@ public TransportOpenPointInTimeAction(
SearchTransportService searchTransportService,
NamedWriteableRegistry namedWriteableRegistry,
ClusterService clusterService,
SearchResponseMetrics searchResponseMetrics
SearchResponseMetrics searchResponseMetrics,
CrossProjectModeDecider crossProjectModeDecider
) {
super(TYPE.name(), transportService, actionFilters, OpenPointInTimeRequest::new, EsExecutors.DIRECT_EXECUTOR_SERVICE);
this.transportService = transportService;
this.transportSearchAction = transportSearchAction;
this.searchService = searchService;
this.searchTransportService = searchTransportService;
this.namedWriteableRegistry = namedWriteableRegistry;
this.clusterService = clusterService;
this.searchResponseMetrics = searchResponseMetrics;
this.crossProjectModeDecider = new CrossProjectModeDecider(clusterService.getSettings());
this.crossProjectModeDecider = crossProjectModeDecider;
this.forceConnectTimeoutSecs = clusterService.getSettings()
.getAsTime("search.ccs.force_connect_timeout", TimeValue.timeValueSeconds(3L));
transportService.registerRequestHandler(
Expand Down
Loading
Loading