Skip to content

Commit 24cf061

Browse files
author
Tianli Feng
committed
Add request parameter cluster_manager_timeout
Signed-off-by: Tianli Feng <ftianli@amazon.com>
1 parent c8d8009 commit 24cf061

File tree

3 files changed

+64
-1
lines changed

3 files changed

+64
-1
lines changed

server/src/main/java/org/opensearch/action/support/master/MasterNodeRequest.java

+35-1
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,15 @@
4444
*/
4545
public abstract class MasterNodeRequest<Request extends MasterNodeRequest<Request>> extends ActionRequest {
4646

47+
/**
48+
* @deprecated As of 2.0, because promoting inclusive language, replaced by {@link #DEFAULT_CLUSTER_MANAGER_NODE_TIMEOUT}
49+
*/
50+
@Deprecated
4751
public static final TimeValue DEFAULT_MASTER_NODE_TIMEOUT = TimeValue.timeValueSeconds(30);
4852

49-
protected TimeValue masterNodeTimeout = DEFAULT_MASTER_NODE_TIMEOUT;
53+
public static final TimeValue DEFAULT_CLUSTER_MANAGER_NODE_TIMEOUT = TimeValue.timeValueSeconds(30);
54+
55+
protected TimeValue masterNodeTimeout = DEFAULT_CLUSTER_MANAGER_NODE_TIMEOUT;
5056

5157
protected MasterNodeRequest() {}
5258

@@ -63,21 +69,49 @@ public void writeTo(StreamOutput out) throws IOException {
6369

6470
/**
6571
* A timeout value in case the master has not been discovered yet or disconnected.
72+
* @deprecated As of 2.0, because promoting inclusive language, replaced by {@link #clusterManagerNodeTimeout}
6673
*/
74+
@Deprecated
6775
@SuppressWarnings("unchecked")
6876
public final Request masterNodeTimeout(TimeValue timeout) {
6977
this.masterNodeTimeout = timeout;
7078
return (Request) this;
7179
}
7280

81+
/**
82+
* A timeout value in case the cluster manager has not been discovered yet or disconnected.
83+
*/
84+
@SuppressWarnings("unchecked")
85+
public final Request clusterManagerNodeTimeout(TimeValue timeout) {
86+
this.masterNodeTimeout = timeout;
87+
return (Request) this;
88+
}
89+
7390
/**
7491
* A timeout value in case the master has not been discovered yet or disconnected.
92+
* @deprecated As of 2.0, because promoting inclusive language, replaced by {@link #clusterManagerNodeTimeout}
7593
*/
94+
@Deprecated
7695
public final Request masterNodeTimeout(String timeout) {
7796
return masterNodeTimeout(TimeValue.parseTimeValue(timeout, null, getClass().getSimpleName() + ".masterNodeTimeout"));
7897
}
7998

99+
/**
100+
* A timeout value in case the cluster manager has not been discovered yet or disconnected.
101+
*/
102+
public final Request clusterManagerNodeTimeout(String timeout) {
103+
return clusterManagerNodeTimeout(TimeValue.parseTimeValue(timeout, null, getClass().getSimpleName() + ".masterNodeTimeout"));
104+
}
105+
106+
/**
107+
* @deprecated As of 2.0, because promoting inclusive language, replaced by {@link #clusterManagerNodeTimeout}
108+
*/
109+
@Deprecated
80110
public final TimeValue masterNodeTimeout() {
81111
return this.masterNodeTimeout;
82112
}
113+
114+
public final TimeValue clusterManagerNodeTimeout() {
115+
return this.masterNodeTimeout;
116+
}
83117
}

server/src/main/java/org/opensearch/rest/RestRequest.java

+26
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import java.io.IOException;
5555
import java.io.InputStream;
5656
import java.util.ArrayList;
57+
import java.util.Arrays;
5758
import java.util.Collections;
5859
import java.util.HashMap;
5960
import java.util.HashSet;
@@ -578,6 +579,31 @@ public static XContentType parseContentType(List<String> header) {
578579
throw new IllegalArgumentException("empty Content-Type header");
579580
}
580581

582+
/**
583+
* The method is only used to validate whether the values of the 2 request parameters "master_timeout" and "cluster_manager_timeout" is the same value or not.
584+
* If the 2 values are not the same, throw an {@link OpenSearchParseException}.
585+
* @param keys Keys of the request parameters.
586+
* @deprecated The method will be removed along with the request parameter "master_timeout".
587+
*/
588+
@Deprecated
589+
public void validateParamValuesAreEqual(String... keys) {
590+
// Filter the non-null values of the parameters with the key, and get the distinct values.
591+
Set<String> set = new HashSet<>();
592+
for (String key : keys) {
593+
String value = param(key);
594+
if (value != null) {
595+
set.add(value);
596+
}
597+
}
598+
// If there are more than 1 distinct value of the request parameters, throw an exception.
599+
if (set.size() > 1) {
600+
throw new OpenSearchParseException(
601+
"The values of the request parameters: {} are required to be equal, otherwise please only assign value to one of the request parameters.",
602+
Arrays.toString(keys)
603+
);
604+
}
605+
}
606+
581607
public static class ContentTypeHeaderException extends RuntimeException {
582608

583609
ContentTypeHeaderException(final IllegalArgumentException cause) {

server/src/main/java/org/opensearch/rest/action/cat/RestPluginsAction.java

+3
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,9 @@ public RestChannelConsumer doCatRequest(final RestRequest request, final NodeCli
7676
clusterStateRequest.clear().nodes(true);
7777
clusterStateRequest.local(request.paramAsBoolean("local", clusterStateRequest.local()));
7878
clusterStateRequest.masterNodeTimeout(request.paramAsTime("master_timeout", clusterStateRequest.masterNodeTimeout()));
79+
// Add "cluster_manager_timeout" as the alternative to "master_timeout", for promoting inclusive language.
80+
request.validateParamValuesAreEqual("master_timeout", "cluster_manager_timeout");
81+
clusterStateRequest.masterNodeTimeout(request.paramAsTime("cluster_manager_timeout", clusterStateRequest.masterNodeTimeout()));
7982

8083
return channel -> client.admin().cluster().state(clusterStateRequest, new RestActionListener<ClusterStateResponse>(channel) {
8184
@Override

0 commit comments

Comments
 (0)