Skip to content

Commit af5269e

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

File tree

7 files changed

+71
-15
lines changed

7 files changed

+71
-15
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 & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,18 @@
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;
17-
import org.elasticsearch.action.support.TransportAction;
17+
import org.elasticsearch.action.support.local.LocalClusterStateRequest;
1818
import org.elasticsearch.cluster.metadata.ComponentTemplate;
1919
import org.elasticsearch.cluster.metadata.DataStreamGlobalRetention;
20+
import org.elasticsearch.common.io.stream.StreamInput;
2021
import org.elasticsearch.common.io.stream.StreamOutput;
2122
import org.elasticsearch.core.Nullable;
23+
import org.elasticsearch.core.TimeValue;
2224
import org.elasticsearch.tasks.CancellableTask;
2325
import org.elasticsearch.tasks.Task;
2426
import org.elasticsearch.tasks.TaskId;
@@ -45,20 +47,30 @@ private GetComponentTemplateAction() {
4547
/**
4648
* Request that to retrieve one or more component templates
4749
*/
48-
public static class Request extends ActionRequest {
50+
public static class Request extends LocalClusterStateRequest {
4951

5052
@Nullable
5153
private String name;
5254
private boolean includeDefaults;
5355

54-
public Request(String name) {
56+
public Request(TimeValue masterTimeout, String name) {
57+
super(masterTimeout);
5558
this.name = name;
5659
this.includeDefaults = false;
5760
}
5861

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

6476
@Override
@@ -160,7 +172,14 @@ public DataStreamGlobalRetention getGlobalRetention() {
160172

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

166185
@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)