From a2e94246abb0cd9f69996972f1505beb88305fb9 Mon Sep 17 00:00:00 2001 From: Pawan Kartik Date: Wed, 8 Oct 2025 15:51:32 +0100 Subject: [PATCH] =?UTF-8?q?Revert=20"`ccs=5Fminimize=5Froundtrips`=20shoul?= =?UTF-8?q?d=20default=20to=20`true`=20for=20async=20search=20f=E2=80=A6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 391e78d82299ba209303fd48cb72108050dac993. --- .../mustache/RestSearchTemplateAction.java | 9 +--- .../AbstractBulkByQueryRestHandler.java | 10 +--- .../rest/action/search/RestSearchAction.java | 52 +++---------------- .../search/RestSubmitAsyncSearchAction.java | 17 +----- .../fleet/rest/RestFleetSearchAction.java | 12 +---- .../rollup/rest/RestRollupSearchAction.java | 5 +- 6 files changed, 15 insertions(+), 90 deletions(-) diff --git a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/RestSearchTemplateAction.java b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/RestSearchTemplateAction.java index cd9172fc1aff1..72e58b651e486 100644 --- a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/RestSearchTemplateAction.java +++ b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/RestSearchTemplateAction.java @@ -23,7 +23,6 @@ import java.io.IOException; import java.util.List; -import java.util.Optional; import java.util.Set; import java.util.function.Predicate; @@ -39,12 +38,10 @@ public class RestSearchTemplateAction extends BaseRestHandler { private final Predicate clusterSupportsFeature; private final Settings settings; - private final boolean inCpsContext; public RestSearchTemplateAction(Predicate clusterSupportsFeature, Settings settings) { this.clusterSupportsFeature = clusterSupportsFeature; this.settings = settings; - this.inCpsContext = settings != null && settings.getAsBoolean("serverless.cross_project.enabled", false); } @Override @@ -64,7 +61,7 @@ public String getName() { @Override public RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) throws IOException { - if (inCpsContext) { + if (settings != null && settings.getAsBoolean("serverless.cross_project.enabled", false)) { // accept but drop project_routing param until fully supported request.param("project_routing"); } @@ -76,9 +73,7 @@ public RestChannelConsumer prepareRequest(RestRequest request, NodeClient client request, null, clusterSupportsFeature, - size -> searchRequest.source().size(size), - // This endpoint is CPS-enabled so propagate the right value. - Optional.of(inCpsContext) + size -> searchRequest.source().size(size) ); // Creates the search template request diff --git a/modules/reindex/src/main/java/org/elasticsearch/reindex/AbstractBulkByQueryRestHandler.java b/modules/reindex/src/main/java/org/elasticsearch/reindex/AbstractBulkByQueryRestHandler.java index 36dcc30986e8f..095d119bf2719 100644 --- a/modules/reindex/src/main/java/org/elasticsearch/reindex/AbstractBulkByQueryRestHandler.java +++ b/modules/reindex/src/main/java/org/elasticsearch/reindex/AbstractBulkByQueryRestHandler.java @@ -26,7 +26,6 @@ import java.io.IOException; import java.util.Map; -import java.util.Optional; import java.util.function.Consumer; import java.util.function.Predicate; @@ -53,14 +52,7 @@ protected void parseInternalRequest( SearchRequest searchRequest = internal.getSearchRequest(); try (XContentParser parser = extractRequestSpecificFields(restRequest, bodyConsumers)) { - RestSearchAction.parseSearchRequest( - searchRequest, - restRequest, - parser, - clusterSupportsFeature, - size -> failOnSizeSpecified(), - Optional.empty() - ); + RestSearchAction.parseSearchRequest(searchRequest, restRequest, parser, clusterSupportsFeature, size -> failOnSizeSpecified()); } searchRequest.source().size(restRequest.paramAsInt("scroll_size", searchRequest.source().size())); diff --git a/server/src/main/java/org/elasticsearch/rest/action/search/RestSearchAction.java b/server/src/main/java/org/elasticsearch/rest/action/search/RestSearchAction.java index 30f3aa566c537..a31640fab8ebd 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/search/RestSearchAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/search/RestSearchAction.java @@ -43,7 +43,6 @@ import java.util.Arrays; import java.util.List; import java.util.Locale; -import java.util.Optional; import java.util.Set; import java.util.function.IntConsumer; import java.util.function.Predicate; @@ -69,7 +68,6 @@ public class RestSearchAction extends BaseRestHandler { private final SearchUsageHolder searchUsageHolder; private final Predicate clusterSupportsFeature; private final Settings settings; - private final boolean inCpsContext; public RestSearchAction(SearchUsageHolder searchUsageHolder, Predicate clusterSupportsFeature) { this(searchUsageHolder, clusterSupportsFeature, null); @@ -79,7 +77,6 @@ public RestSearchAction(SearchUsageHolder searchUsageHolder, Predicate searchRequest.source().size(size); request.withContentOrSourceParamParserOrNull( - parser -> parseSearchRequest( - searchRequest, - request, - parser, - clusterSupportsFeature, - setSize, - searchUsageHolder, - // This endpoint is CPS-enabled so propagate the right value. - Optional.of(inCpsContext) - ) + parser -> parseSearchRequest(searchRequest, request, parser, clusterSupportsFeature, setSize, searchUsageHolder) ); return channel -> { @@ -158,23 +146,15 @@ public RestChannelConsumer prepareRequest(final RestRequest request, final NodeC * parameter * @param clusterSupportsFeature used to check if certain features are available in this cluster * @param setSize how the size url parameter is handled. {@code udpate_by_query} and regular search differ here. - * @param inCpsContext specifies if we're in CPS context. - *
- * true - the endpoint that's invoking this method is CPS-enabled and in a CPS/Serverless context. - *
- * false - the endpoint that's invoking this method is CPS-enabled but not in a CPS/Serverless context. - *
- * Optional.empty - the endpoint is not CPS-enabled irrespective of the environment. */ public static void parseSearchRequest( SearchRequest searchRequest, RestRequest request, XContentParser requestContentParser, Predicate clusterSupportsFeature, - IntConsumer setSize, - Optional inCpsContext + IntConsumer setSize ) throws IOException { - parseSearchRequest(searchRequest, request, requestContentParser, clusterSupportsFeature, setSize, null, inCpsContext); + parseSearchRequest(searchRequest, request, requestContentParser, clusterSupportsFeature, setSize, null); } /** @@ -187,13 +167,6 @@ public static void parseSearchRequest( * @param clusterSupportsFeature used to check if certain features are available in this cluster * @param setSize how the size url parameter is handled. {@code udpate_by_query} and regular search differ here. * @param searchUsageHolder the holder of search usage stats - * @param inCpsContext specifies if we're in CPS context. - *
- * true - the endpoint that's invoking this method is CPS-enabled and in a CPS/Serverless context. - *
- * false - the endpoint that's invoking this method is CPS-enabled but not in a CPS/Serverless context. - *
- * Optional.empty - the endpoint is not CPS-enabled irrespective of the environment. */ public static void parseSearchRequest( SearchRequest searchRequest, @@ -201,8 +174,7 @@ public static void parseSearchRequest( @Nullable XContentParser requestContentParser, Predicate clusterSupportsFeature, IntConsumer setSize, - @Nullable SearchUsageHolder searchUsageHolder, - Optional inCpsContext + @Nullable SearchUsageHolder searchUsageHolder ) throws IOException { if (searchRequest.source() == null) { searchRequest.source(new SearchSourceBuilder()); @@ -257,17 +229,9 @@ public static void parseSearchRequest( if (searchRequest.pointInTimeBuilder() != null) { preparePointInTime(searchRequest, request); } else { - if (inCpsContext.orElse(false)) { - // We're in CPS environment. MRT should not be settable by the user. - if (request.hasParam("ccs_minimize_roundtrips")) { - throw new IllegalArgumentException("Setting ccs_minimize_roundtrips is not supported in cross-project search context"); - } - } else { - // Either we're in non-CPS environment or the endpoint isn't CPS enabled, so parse what's in the request. - searchRequest.setCcsMinimizeRoundtrips( - request.paramAsBoolean("ccs_minimize_roundtrips", searchRequest.isCcsMinimizeRoundtrips()) - ); - } + searchRequest.setCcsMinimizeRoundtrips( + request.paramAsBoolean("ccs_minimize_roundtrips", searchRequest.isCcsMinimizeRoundtrips()) + ); } if (request.paramAsBoolean("force_synthetic_source", false)) { searchRequest.setForceSyntheticSource(true); diff --git a/x-pack/plugin/async-search/src/main/java/org/elasticsearch/xpack/search/RestSubmitAsyncSearchAction.java b/x-pack/plugin/async-search/src/main/java/org/elasticsearch/xpack/search/RestSubmitAsyncSearchAction.java index 565ad19927570..39f2539dbd791 100644 --- a/x-pack/plugin/async-search/src/main/java/org/elasticsearch/xpack/search/RestSubmitAsyncSearchAction.java +++ b/x-pack/plugin/async-search/src/main/java/org/elasticsearch/xpack/search/RestSubmitAsyncSearchAction.java @@ -24,7 +24,6 @@ import java.io.IOException; import java.util.Collections; import java.util.List; -import java.util.Optional; import java.util.Set; import java.util.function.IntConsumer; import java.util.function.Predicate; @@ -40,7 +39,6 @@ public final class RestSubmitAsyncSearchAction extends BaseRestHandler { private final SearchUsageHolder searchUsageHolder; private final Predicate clusterSupportsFeature; private final Settings settings; - private final boolean inCpsContext; public RestSubmitAsyncSearchAction(SearchUsageHolder searchUsageHolder, Predicate clusterSupportsFeature) { this(searchUsageHolder, clusterSupportsFeature, null); @@ -54,7 +52,6 @@ public RestSubmitAsyncSearchAction( this.searchUsageHolder = searchUsageHolder; this.clusterSupportsFeature = clusterSupportsFeature; this.settings = settings; - this.inCpsContext = settings != null && settings.getAsBoolean("serverless.cross_project.enabled", false); } @Override @@ -74,10 +71,9 @@ protected RestChannelConsumer prepareRequest(RestRequest request, NodeClient cli } SubmitAsyncSearchRequest submit = new SubmitAsyncSearchRequest(); - if (inCpsContext) { + if (settings != null && settings.getAsBoolean("serverless.cross_project.enabled", false)) { // accept but drop project_routing param until fully supported request.param("project_routing"); - submit.getSearchRequest().setCcsMinimizeRoundtrips(true); } IntConsumer setSize = size -> submit.getSearchRequest().source().size(size); @@ -86,16 +82,7 @@ protected RestChannelConsumer prepareRequest(RestRequest request, NodeClient cli // them as supported. We rely on SubmitAsyncSearchRequest#validate to fail in case they are set. // Note that ccs_minimize_roundtrips is also set this way, which is a supported option. request.withContentOrSourceParamParserOrNull( - parser -> parseSearchRequest( - submit.getSearchRequest(), - request, - parser, - clusterSupportsFeature, - setSize, - searchUsageHolder, - // This endpoint is CPS-enabled so propagate the right value. - Optional.of(inCpsContext) - ) + parser -> parseSearchRequest(submit.getSearchRequest(), request, parser, clusterSupportsFeature, setSize, searchUsageHolder) ); if (request.hasParam("wait_for_completion_timeout")) { diff --git a/x-pack/plugin/fleet/src/main/java/org/elasticsearch/xpack/fleet/rest/RestFleetSearchAction.java b/x-pack/plugin/fleet/src/main/java/org/elasticsearch/xpack/fleet/rest/RestFleetSearchAction.java index 72df39814525f..a79424b8b7d59 100644 --- a/x-pack/plugin/fleet/src/main/java/org/elasticsearch/xpack/fleet/rest/RestFleetSearchAction.java +++ b/x-pack/plugin/fleet/src/main/java/org/elasticsearch/xpack/fleet/rest/RestFleetSearchAction.java @@ -26,7 +26,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -import java.util.Optional; import java.util.Set; import java.util.function.IntConsumer; import java.util.function.Predicate; @@ -71,16 +70,7 @@ protected RestChannelConsumer prepareRequest(RestRequest request, NodeClient cli IntConsumer setSize = size -> searchRequest.source().size(size); request.withContentOrSourceParamParserOrNull(parser -> { - RestSearchAction.parseSearchRequest( - searchRequest, - request, - parser, - clusterSupportsFeature, - setSize, - searchUsageHolder, - // This endpoint is not CPS-enabled. - Optional.empty() - ); + RestSearchAction.parseSearchRequest(searchRequest, request, parser, clusterSupportsFeature, setSize, searchUsageHolder); String[] stringWaitForCheckpoints = request.paramAsStringArray("wait_for_checkpoints", Strings.EMPTY_ARRAY); final long[] waitForCheckpoints = new long[stringWaitForCheckpoints.length]; for (int i = 0; i < stringWaitForCheckpoints.length; ++i) { diff --git a/x-pack/plugin/rollup/src/main/java/org/elasticsearch/xpack/rollup/rest/RestRollupSearchAction.java b/x-pack/plugin/rollup/src/main/java/org/elasticsearch/xpack/rollup/rest/RestRollupSearchAction.java index 24e0c0400f189..a2e795d07aaf2 100644 --- a/x-pack/plugin/rollup/src/main/java/org/elasticsearch/xpack/rollup/rest/RestRollupSearchAction.java +++ b/x-pack/plugin/rollup/src/main/java/org/elasticsearch/xpack/rollup/rest/RestRollupSearchAction.java @@ -17,7 +17,6 @@ import java.io.IOException; import java.util.List; -import java.util.Optional; import java.util.Set; import java.util.function.Predicate; @@ -53,9 +52,7 @@ protected RestChannelConsumer prepareRequest(RestRequest restRequest, NodeClient restRequest, parser, clusterSupportsFeature, - size -> searchRequest.source().size(size), - // This endpoint is not CPS-enabled. - Optional.empty() + size -> searchRequest.source().size(size) ) ); RestSearchAction.validateSearchRequest(restRequest, searchRequest);