diff --git a/modules/data-streams/src/main/java/org/elasticsearch/datastreams/rest/RestGetDataStreamsAction.java b/modules/data-streams/src/main/java/org/elasticsearch/datastreams/rest/RestGetDataStreamsAction.java index 23472b4830fa3..da55376fb403b 100644 --- a/modules/data-streams/src/main/java/org/elasticsearch/datastreams/rest/RestGetDataStreamsAction.java +++ b/modules/data-streams/src/main/java/org/elasticsearch/datastreams/rest/RestGetDataStreamsAction.java @@ -29,6 +29,23 @@ @ServerlessScope(Scope.PUBLIC) public class RestGetDataStreamsAction extends BaseRestHandler { + private static final Set SUPPORTED_QUERY_PARAMETERS = Set.copyOf( + Sets.union( + RestRequest.INTERNAL_MARKER_REQUEST_PARAMETERS, + Set.of( + "name", + "include_defaults", + "timeout", + "master_timeout", + IndicesOptions.WildcardOptions.EXPAND_WILDCARDS, + IndicesOptions.ConcreteTargetOptions.IGNORE_UNAVAILABLE, + IndicesOptions.WildcardOptions.ALLOW_NO_INDICES, + IndicesOptions.GatekeeperOptions.IGNORE_THROTTLED, + "verbose" + ) + ) + ); + @Override public String getName() { return "get_data_streams_action"; @@ -63,19 +80,6 @@ public Set supportedCapabilities() { @Override public Set supportedQueryParameters() { - return Sets.union( - RestRequest.INTERNAL_MARKER_REQUEST_PARAMETERS, - Set.of( - "name", - "include_defaults", - "timeout", - "master_timeout", - IndicesOptions.WildcardOptions.EXPAND_WILDCARDS, - IndicesOptions.ConcreteTargetOptions.IGNORE_UNAVAILABLE, - IndicesOptions.WildcardOptions.ALLOW_NO_INDICES, - IndicesOptions.GatekeeperOptions.IGNORE_THROTTLED, - "verbose" - ) - ); + return SUPPORTED_QUERY_PARAMETERS; } } diff --git a/server/src/main/java/org/elasticsearch/rest/BaseRestHandler.java b/server/src/main/java/org/elasticsearch/rest/BaseRestHandler.java index 5f12a2bdd6783..99fa3e0166963 100644 --- a/server/src/main/java/org/elasticsearch/rest/BaseRestHandler.java +++ b/server/src/main/java/org/elasticsearch/rest/BaseRestHandler.java @@ -85,6 +85,7 @@ public final long getUsageCount() { public final void handleRequest(RestRequest request, RestChannel channel, NodeClient client) throws Exception { // check if the query has any parameters that are not in the supported set (if declared) Set supported = allSupportedParameters(); + assert supported == allSupportedParameters() : getName() + ": did not return same instance from allSupportedParameters()"; if (supported != null) { var allSupported = Sets.union( RestResponse.RESPONSE_PARAMS, diff --git a/server/src/main/java/org/elasticsearch/rest/RestController.java b/server/src/main/java/org/elasticsearch/rest/RestController.java index 7fcc75ad65872..924cd361c671d 100644 --- a/server/src/main/java/org/elasticsearch/rest/RestController.java +++ b/server/src/main/java/org/elasticsearch/rest/RestController.java @@ -397,6 +397,8 @@ public boolean checkSupported( if (handler != null) { var supportedParams = handler.supportedQueryParameters(); + assert supportedParams == handler.supportedQueryParameters() + : handler.getName() + ": did not return same instance from supportedQueryParameters()"; return (supportedParams == null || supportedParams.containsAll(parameters)) && handler.supportedCapabilities().containsAll(capabilities); } diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestClusterStatsAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestClusterStatsAction.java index 449f5d5b770c4..d46472ff8d6c2 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestClusterStatsAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestClusterStatsAction.java @@ -32,8 +32,11 @@ public class RestClusterStatsAction extends BaseRestHandler { private static final Set SUPPORTED_CAPABILITIES = Set.of("human-readable-total-docs-size"); - private static final Set SUPPORTED_CAPABILITIES_CCS_STATS = Sets.union(SUPPORTED_CAPABILITIES, Set.of("ccs-stats")); + private static final Set SUPPORTED_CAPABILITIES_CCS_STATS = Sets.copyOf( + Sets.union(SUPPORTED_CAPABILITIES, Set.of("ccs-stats")) + ); public static final FeatureFlag CCS_TELEMETRY_FEATURE_FLAG = new FeatureFlag("ccs_telemetry"); + private static final Set SUPPORTED_QUERY_PARAMETERS = Set.of("include_remotes", "nodeId", REST_TIMEOUT_PARAM); @Override public List routes() { @@ -47,7 +50,7 @@ public String getName() { @Override public Set supportedQueryParameters() { - return Set.of("include_remotes", "nodeId", REST_TIMEOUT_PARAM); + return SUPPORTED_QUERY_PARAMETERS; } @Override diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestNodesCapabilitiesAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestNodesCapabilitiesAction.java index ad405656631b0..bc7f8c7e12449 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestNodesCapabilitiesAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestNodesCapabilitiesAction.java @@ -32,6 +32,14 @@ public class RestNodesCapabilitiesAction extends BaseRestHandler { public static final NodeFeature CAPABILITIES_ACTION = new NodeFeature("rest.capabilities_action"); public static final NodeFeature LOCAL_ONLY_CAPABILITIES = new NodeFeature("rest.local_only_capabilities"); + private static final Set SUPPORTED_QUERY_PARAMETERS = Set.of( + "timeout", + "method", + "path", + "parameters", + "capabilities", + "local_only" + ); @Override public List routes() { @@ -40,7 +48,7 @@ public List routes() { @Override public Set supportedQueryParameters() { - return Set.of("timeout", "method", "path", "parameters", "capabilities", "local_only"); + return SUPPORTED_QUERY_PARAMETERS; } @Override