Skip to content

Commit 032b42f

Browse files
authored
Make TransportLocalClusterStateAction wait for cluster to unblock (#117230)
This will make `TransportLocalClusterStateAction` wait for a new state that is not blocked. This means we need a timeout (again). For consistency's sake, we're reusing the REST param `master_timeout` for this timeout as well. The only class that was using `TransportLocalClusterStateAction` was `TransportGetAliasesAction`, so its request needed to accept a timeout again as well.
1 parent 4496aa0 commit 032b42f

File tree

16 files changed

+396
-79
lines changed

16 files changed

+396
-79
lines changed

docs/changelog/117230.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 117230
2+
summary: Make various alias retrieval APIs wait for cluster to unblock
3+
area: Distributed
4+
type: enhancement
5+
issues: []

docs/reference/cat/alias.asciidoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ include::{es-ref-dir}/rest-api/common-parms.asciidoc[tag=cat-v]
5151

5252
include::{es-ref-dir}/rest-api/common-parms.asciidoc[tag=expand-wildcards]
5353

54+
include::{es-ref-dir}/rest-api/common-parms.asciidoc[tag=master-timeout]
55+
5456
[[cat-alias-api-example]]
5557
==== {api-examples-title}
5658

docs/reference/indices/alias-exists.asciidoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ Defaults to `all`.
5252
(Optional, Boolean) If `false`, requests that include a missing data stream or
5353
index in the `<target>` return an error. Defaults to `false`.
5454

55+
include::{es-ref-dir}/rest-api/common-parms.asciidoc[tag=master-timeout]
56+
5557
[[alias-exists-api-response-codes]]
5658
==== {api-response-codes-title}
5759

docs/reference/indices/get-alias.asciidoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,5 @@ Defaults to `all`.
5858
`ignore_unavailable`::
5959
(Optional, Boolean) If `false`, requests that include a missing data stream or
6060
index in the `<target>` return an error. Defaults to `false`.
61+
62+
include::{es-ref-dir}/rest-api/common-parms.asciidoc[tag=master-timeout]

rest-api-spec/src/main/resources/rest-api-spec/api/cat.aliases.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@
6565
],
6666
"default": "all",
6767
"description":"Whether to expand wildcard expression to concrete indices that are open, closed or both."
68+
},
69+
"master_timeout":{
70+
"type":"time",
71+
"description":"Timeout for waiting for new cluster state in case it is blocked",
72+
"default":"30s"
6873
}
6974
}
7075
}

rest-api-spec/src/main/resources/rest-api-spec/api/indices.exists_alias.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@
6161
],
6262
"default":"all",
6363
"description":"Whether to expand wildcard expression to concrete indices that are open, closed or both."
64+
},
65+
"master_timeout":{
66+
"type":"time",
67+
"description":"Timeout for waiting for new cluster state in case it is blocked",
68+
"default":"30s"
6469
}
6570
}
6671
}

rest-api-spec/src/main/resources/rest-api-spec/api/indices.get_alias.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,11 @@
7979
],
8080
"default": "all",
8181
"description":"Whether to expand wildcard expression to concrete indices that are open, closed or both."
82+
},
83+
"master_timeout":{
84+
"type":"time",
85+
"description":"Timeout for waiting for new cluster state in case it is blocked",
86+
"default":"30s"
8287
}
8388
}
8489
}

server/src/main/java/module-info.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@
147147
exports org.elasticsearch.action.support.master;
148148
exports org.elasticsearch.action.support.master.info;
149149
exports org.elasticsearch.action.support.nodes;
150+
exports org.elasticsearch.action.support.local;
150151
exports org.elasticsearch.action.support.replication;
151152
exports org.elasticsearch.action.support.single.instance;
152153
exports org.elasticsearch.action.support.single.shard;

server/src/main/java/org/elasticsearch/action/admin/indices/alias/get/GetAliasesRequest.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,20 @@
88
*/
99
package org.elasticsearch.action.admin.indices.alias.get;
1010

11-
import org.elasticsearch.action.ActionRequest;
1211
import org.elasticsearch.action.ActionRequestValidationException;
1312
import org.elasticsearch.action.AliasesRequest;
1413
import org.elasticsearch.action.support.IndicesOptions;
15-
import org.elasticsearch.action.support.TransportAction;
14+
import org.elasticsearch.action.support.local.LocalClusterStateRequest;
15+
import org.elasticsearch.action.support.master.MasterNodeRequest;
1616
import org.elasticsearch.common.Strings;
17-
import org.elasticsearch.common.io.stream.StreamOutput;
17+
import org.elasticsearch.core.TimeValue;
1818
import org.elasticsearch.tasks.CancellableTask;
1919
import org.elasticsearch.tasks.Task;
2020
import org.elasticsearch.tasks.TaskId;
2121

22-
import java.io.IOException;
2322
import java.util.Map;
2423

25-
public class GetAliasesRequest extends ActionRequest implements AliasesRequest {
24+
public class GetAliasesRequest extends LocalClusterStateRequest implements AliasesRequest {
2625

2726
public static final IndicesOptions DEFAULT_INDICES_OPTIONS = IndicesOptions.strictExpandHidden();
2827

@@ -31,18 +30,20 @@ public class GetAliasesRequest extends ActionRequest implements AliasesRequest {
3130
private String[] indices = Strings.EMPTY_ARRAY;
3231
private IndicesOptions indicesOptions = DEFAULT_INDICES_OPTIONS;
3332

33+
@Deprecated
3434
public GetAliasesRequest(String... aliases) {
35-
this.aliases = aliases;
36-
this.originalAliases = aliases;
35+
this(MasterNodeRequest.TRAPPY_IMPLICIT_DEFAULT_MASTER_NODE_TIMEOUT, aliases);
3736
}
3837

38+
@Deprecated
3939
public GetAliasesRequest() {
4040
this(Strings.EMPTY_ARRAY);
4141
}
4242

43-
@Override
44-
public void writeTo(StreamOutput out) throws IOException {
45-
TransportAction.localOnly();
43+
public GetAliasesRequest(TimeValue masterTimeout, String... aliases) {
44+
super(masterTimeout);
45+
this.aliases = aliases;
46+
this.originalAliases = aliases;
4647
}
4748

4849
@Override

server/src/main/java/org/elasticsearch/action/admin/indices/alias/get/TransportGetAliasesAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
import org.elasticsearch.action.ActionListener;
1212
import org.elasticsearch.action.support.ActionFilters;
13-
import org.elasticsearch.action.support.TransportLocalClusterStateAction;
13+
import org.elasticsearch.action.support.local.TransportLocalClusterStateAction;
1414
import org.elasticsearch.cluster.ClusterState;
1515
import org.elasticsearch.cluster.block.ClusterBlockException;
1616
import org.elasticsearch.cluster.block.ClusterBlockLevel;

0 commit comments

Comments
 (0)