Skip to content

Commit f0f752a

Browse files
committed
Make use of new TransportLocalClusterStateAction changes and fix tests
1 parent 91faa7f commit f0f752a

File tree

7 files changed

+71
-14
lines changed

7 files changed

+71
-14
lines changed

server/src/internalClusterTest/java/org/elasticsearch/reservedstate/service/ComponentTemplatesFileSettingsIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ private void assertComponentAndIndexTemplateDelete(CountDownLatch savedClusterSt
463463

464464
final var componentResponse = client().execute(
465465
GetComponentTemplateAction.INSTANCE,
466-
new GetComponentTemplateAction.Request("other*")
466+
new GetComponentTemplateAction.Request(TEST_REQUEST_TIMEOUT, "other*")
467467
).get();
468468

469469
assertTrue(componentResponse.getComponentTemplates().isEmpty());

server/src/main/java/org/elasticsearch/action/admin/indices/template/get/GetComponentTemplateAction.java

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,19 @@
99

1010
package org.elasticsearch.action.admin.indices.template.get;
1111

12-
import org.elasticsearch.action.ActionRequest;
12+
import org.elasticsearch.TransportVersions;
1313
import org.elasticsearch.action.ActionRequestValidationException;
1414
import org.elasticsearch.action.ActionResponse;
1515
import org.elasticsearch.action.ActionType;
1616
import org.elasticsearch.action.admin.indices.rollover.RolloverConfiguration;
1717
import org.elasticsearch.action.support.TransportAction;
18+
import org.elasticsearch.action.support.local.LocalClusterStateRequest;
1819
import org.elasticsearch.cluster.metadata.ComponentTemplate;
1920
import org.elasticsearch.cluster.metadata.DataStreamGlobalRetention;
21+
import org.elasticsearch.common.io.stream.StreamInput;
2022
import org.elasticsearch.common.io.stream.StreamOutput;
2123
import org.elasticsearch.core.Nullable;
24+
import org.elasticsearch.core.TimeValue;
2225
import org.elasticsearch.tasks.CancellableTask;
2326
import org.elasticsearch.tasks.Task;
2427
import org.elasticsearch.tasks.TaskId;
@@ -45,20 +48,30 @@ private GetComponentTemplateAction() {
4548
/**
4649
* Request that to retrieve one or more component templates
4750
*/
48-
public static class Request extends ActionRequest {
51+
public static class Request extends LocalClusterStateRequest {
4952

5053
@Nullable
5154
private String name;
5255
private boolean includeDefaults;
5356

54-
public Request(String name) {
57+
public Request(TimeValue masterTimeout, String name) {
58+
super(masterTimeout);
5559
this.name = name;
5660
this.includeDefaults = false;
5761
}
5862

59-
@Override
60-
public void writeTo(StreamOutput out) throws IOException {
61-
TransportAction.localOnly();
63+
public Request(StreamInput in) throws IOException {
64+
super(in);
65+
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_15_0)) {
66+
in.readVLong();
67+
}
68+
in.readBoolean();
69+
name = in.readOptionalString();
70+
if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_9_X)) {
71+
includeDefaults = in.readBoolean();
72+
} else {
73+
includeDefaults = false;
74+
}
6275
}
6376

6477
@Override
@@ -160,7 +173,14 @@ public DataStreamGlobalRetention getGlobalRetention() {
160173

161174
@Override
162175
public void writeTo(StreamOutput out) throws IOException {
163-
TransportAction.localOnly();
176+
out.writeMap(componentTemplates, StreamOutput::writeWriteable);
177+
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_9_X)) {
178+
out.writeOptionalWriteable(rolloverConfiguration);
179+
}
180+
if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_14_0)
181+
&& out.getTransportVersion().before(TransportVersions.REMOVE_GLOBAL_RETENTION_FROM_TEMPLATES)) {
182+
out.writeOptionalWriteable(null);
183+
}
164184
}
165185

166186
@Override

server/src/main/java/org/elasticsearch/action/admin/indices/template/get/TransportGetComponentTemplateAction.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
import org.elasticsearch.ResourceNotFoundException;
1313
import org.elasticsearch.action.ActionListener;
1414
import org.elasticsearch.action.support.ActionFilters;
15-
import org.elasticsearch.action.support.TransportLocalClusterStateAction;
15+
import org.elasticsearch.action.support.ChannelActionListener;
16+
import org.elasticsearch.action.support.local.TransportLocalClusterStateAction;
1617
import org.elasticsearch.cluster.ClusterState;
1718
import org.elasticsearch.cluster.block.ClusterBlockException;
1819
import org.elasticsearch.cluster.block.ClusterBlockLevel;
@@ -36,6 +37,7 @@ public class TransportGetComponentTemplateAction extends TransportLocalClusterSt
3637

3738
private final ClusterSettings clusterSettings;
3839

40+
@SuppressWarnings("this-escape")
3941
@Inject
4042
public TransportGetComponentTemplateAction(
4143
TransportService transportService,
@@ -50,6 +52,15 @@ public TransportGetComponentTemplateAction(
5052
EsExecutors.DIRECT_EXECUTOR_SERVICE
5153
);
5254
clusterSettings = clusterService.getClusterSettings();
55+
56+
transportService.registerRequestHandler(
57+
actionName,
58+
executor,
59+
false,
60+
true,
61+
GetComponentTemplateAction.Request::new,
62+
(request, channel, task) -> executeDirect(task, request, new ChannelActionListener<>(channel))
63+
);
5364
}
5465

5566
@Override

server/src/main/java/org/elasticsearch/action/support/local/LocalClusterStateRequest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import org.elasticsearch.action.ActionRequest;
1313
import org.elasticsearch.action.support.TransportAction;
14+
import org.elasticsearch.common.io.stream.StreamInput;
1415
import org.elasticsearch.common.io.stream.StreamOutput;
1516
import org.elasticsearch.core.TimeValue;
1617

@@ -32,6 +33,11 @@ protected LocalClusterStateRequest(TimeValue masterTimeout) {
3233
this.masterTimeout = Objects.requireNonNull(masterTimeout);
3334
}
3435

36+
protected LocalClusterStateRequest(StreamInput in) throws IOException {
37+
super(in);
38+
masterTimeout = in.readTimeValue();
39+
}
40+
3541
@Override
3642
public final void writeTo(StreamOutput out) throws IOException {
3743
TransportAction.localOnly();

server/src/main/java/org/elasticsearch/action/support/local/TransportLocalClusterStateAction.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,16 @@
2121
import org.elasticsearch.cluster.ClusterStateObserver;
2222
import org.elasticsearch.cluster.block.ClusterBlockException;
2323
import org.elasticsearch.cluster.service.ClusterService;
24+
import org.elasticsearch.common.logging.DeprecationCategory;
25+
import org.elasticsearch.common.logging.DeprecationLogger;
2426
import org.elasticsearch.common.util.concurrent.EsExecutors;
2527
import org.elasticsearch.core.TimeValue;
28+
import org.elasticsearch.core.UpdateForV10;
2629
import org.elasticsearch.node.NodeClosedException;
2730
import org.elasticsearch.tasks.CancellableTask;
2831
import org.elasticsearch.tasks.Task;
2932
import org.elasticsearch.tasks.TaskManager;
33+
import org.elasticsearch.xcontent.ToXContent;
3034

3135
import java.util.concurrent.Executor;
3236

@@ -125,4 +129,18 @@ public void onTimeout(TimeValue timeout) {
125129
private boolean isTaskCancelled(Task task) {
126130
return task instanceof CancellableTask cancellableTask && cancellableTask.isCancelled();
127131
}
132+
133+
// Remove the BWC support for the deprecated ?local parameter.
134+
// NOTE: ensure each usage of this method has been deprecated for long enough to remove it.
135+
@UpdateForV10(owner = UpdateForV10.Owner.DISTRIBUTED_COORDINATION)
136+
public static void consumeDeprecatedLocalParameter(ToXContent.Params params) {
137+
if (params.paramAsBoolean("local", false)) {
138+
DeprecationLogger.getLogger(TransportLocalClusterStateAction.class)
139+
.critical(
140+
DeprecationCategory.API,
141+
"TransportLocalClusterStateAction-local-parameter",
142+
"the [?local] query parameter to this API has no effect, is now deprecated, and will be removed in a future version"
143+
);
144+
}
145+
}
128146
}

server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestGetComponentTemplateAction.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
package org.elasticsearch.rest.action.admin.indices;
1111

1212
import org.elasticsearch.action.admin.indices.template.get.GetComponentTemplateAction;
13-
import org.elasticsearch.action.support.TransportLocalClusterStateAction;
13+
import org.elasticsearch.action.support.local.TransportLocalClusterStateAction;
1414
import org.elasticsearch.client.internal.node.NodeClient;
1515
import org.elasticsearch.common.settings.Settings;
1616
import org.elasticsearch.rest.BaseRestHandler;
@@ -28,6 +28,7 @@
2828
import static org.elasticsearch.rest.RestRequest.Method.HEAD;
2929
import static org.elasticsearch.rest.RestStatus.NOT_FOUND;
3030
import static org.elasticsearch.rest.RestStatus.OK;
31+
import static org.elasticsearch.rest.RestUtils.getMasterNodeTimeout;
3132

3233
@ServerlessScope(Scope.PUBLIC)
3334
public class RestGetComponentTemplateAction extends BaseRestHandler {
@@ -48,11 +49,12 @@ public String getName() {
4849

4950
@Override
5051
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
51-
52-
final GetComponentTemplateAction.Request getRequest = new GetComponentTemplateAction.Request(request.param("name"));
52+
final GetComponentTemplateAction.Request getRequest = new GetComponentTemplateAction.Request(
53+
getMasterNodeTimeout(request),
54+
request.param("name")
55+
);
5356
getRequest.includeDefaults(request.paramAsBoolean("include_defaults", false));
5457
TransportLocalClusterStateAction.consumeDeprecatedLocalParameter(request);
55-
TransportLocalClusterStateAction.consumeDeprecatedMasterTimeoutParameter(request);
5658

5759
final boolean implicitAll = getRequest.name() == null;
5860

test/framework/src/main/java/org/elasticsearch/test/TestCluster.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ private void deleteTemplates(Set<String> excludeTemplates, ActionListener<Void>
120120
);
121121

122122
final SubscribableListener<GetComponentTemplateAction.Response> getComponentTemplates = SubscribableListener.newForked(
123-
l -> client().execute(GetComponentTemplateAction.INSTANCE, new GetComponentTemplateAction.Request("*"), l)
123+
l -> client().execute(GetComponentTemplateAction.INSTANCE, new GetComponentTemplateAction.Request(TEST_REQUEST_TIMEOUT, "*"), l)
124124
);
125125

126126
SubscribableListener

0 commit comments

Comments
 (0)