Skip to content

Commit 6e57ae3

Browse files
committed
Add timeout to put synonyms action, fix tests
1 parent a5a8a75 commit 6e57ae3

File tree

8 files changed

+37
-14
lines changed

8 files changed

+37
-14
lines changed

server/src/main/java/org/elasticsearch/action/synonyms/PutSynonymsAction.java

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
package org.elasticsearch.action.synonyms;
1111

12+
import org.elasticsearch.TransportVersions;
1213
import org.elasticsearch.action.ActionRequest;
1314
import org.elasticsearch.action.ActionRequestValidationException;
1415
import org.elasticsearch.action.ActionType;
@@ -31,6 +32,8 @@
3132
import java.util.List;
3233
import java.util.Objects;
3334

35+
import static org.elasticsearch.action.synonyms.PutSynonymRuleAction.DEFAULT_TIMEOUT;
36+
3437
public class PutSynonymsAction extends ActionType<SynonymUpdateResponse> {
3538

3639
public static final PutSynonymsAction INSTANCE = new PutSynonymsAction();
@@ -43,6 +46,7 @@ public PutSynonymsAction() {
4346
public static class Request extends ActionRequest {
4447
private final String synonymsSetId;
4548
private final SynonymRule[] synonymRules;
49+
private final int timeout;
4650

4751
public static final ParseField SYNONYMS_SET_FIELD = new ParseField(SynonymsManagementAPIService.SYNONYMS_SET_FIELD);
4852
private static final ConstructingObjectParser<SynonymRule[], Void> PARSER = new ConstructingObjectParser<>("synonyms_set", args -> {
@@ -59,20 +63,27 @@ public Request(StreamInput in) throws IOException {
5963
super(in);
6064
this.synonymsSetId = in.readString();
6165
this.synonymRules = in.readArray(SynonymRule::new, SynonymRule[]::new);
66+
if (in.getTransportVersion().onOrAfter(TransportVersions.SYNONYMS_UPDATE_TIMEOUT)) {
67+
this.timeout = in.readInt();
68+
} else {
69+
this.timeout = DEFAULT_TIMEOUT;
70+
}
6271
}
6372

64-
public Request(String synonymsSetId, BytesReference content, XContentType contentType) throws IOException {
73+
public Request(String synonymsSetId, int timeout, BytesReference content, XContentType contentType) throws IOException {
6574
this.synonymsSetId = synonymsSetId;
75+
this.timeout = timeout;
6676
try (XContentParser parser = XContentHelper.createParser(XContentParserConfiguration.EMPTY, content, contentType)) {
6777
this.synonymRules = PARSER.apply(parser, null);
6878
} catch (Exception e) {
6979
throw new IllegalArgumentException("Failed to parse: " + content.utf8ToString(), e);
7080
}
7181
}
7282

73-
Request(String synonymsSetId, SynonymRule[] synonymRules) {
83+
Request(String synonymsSetId, SynonymRule[] synonymRules, int timeout) {
7484
this.synonymsSetId = synonymsSetId;
7585
this.synonymRules = synonymRules;
86+
this.timeout = timeout;
7687
}
7788

7889
@Override
@@ -95,12 +106,19 @@ public void writeTo(StreamOutput out) throws IOException {
95106
super.writeTo(out);
96107
out.writeString(synonymsSetId);
97108
out.writeArray(synonymRules);
109+
if (out.getTransportVersion().onOrAfter(TransportVersions.SYNONYMS_UPDATE_TIMEOUT)) {
110+
out.writeInt(timeout);
111+
}
98112
}
99113

100114
public String synonymsSetId() {
101115
return synonymsSetId;
102116
}
103117

118+
public int timeout() {
119+
return timeout;
120+
}
121+
104122
public SynonymRule[] synonymRules() {
105123
return synonymRules;
106124
}
@@ -110,12 +128,14 @@ public boolean equals(Object o) {
110128
if (this == o) return true;
111129
if (o == null || getClass() != o.getClass()) return false;
112130
Request request = (Request) o;
113-
return Objects.equals(synonymsSetId, request.synonymsSetId) && Arrays.equals(synonymRules, request.synonymRules);
131+
return timeout == request.timeout
132+
&& Objects.equals(synonymsSetId, request.synonymsSetId)
133+
&& Arrays.equals(synonymRules, request.synonymRules);
114134
}
115135

116136
@Override
117137
public int hashCode() {
118-
return Objects.hash(synonymsSetId, Arrays.hashCode(synonymRules));
138+
return Objects.hash(synonymsSetId, Arrays.hashCode(synonymRules), timeout);
119139
}
120140
}
121141
}

server/src/main/java/org/elasticsearch/action/synonyms/TransportDeleteSynonymRuleAction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ protected void doExecute(Task task, DeleteSynonymRuleAction.Request request, Act
4141
synonymsManagementAPIService.deleteSynonymRule(
4242
request.synonymsSetId(),
4343
request.synonymRuleId(),
44-
listener.map(SynonymUpdateResponse::new),
45-
timeout);
44+
listener.map(SynonymUpdateResponse::new)
45+
);
4646
}
4747
}

server/src/main/java/org/elasticsearch/action/synonyms/TransportDeleteSynonymsAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,6 @@ public TransportDeleteSynonymsAction(TransportService transportService, ActionFi
3939

4040
@Override
4141
protected void doExecute(Task task, DeleteSynonymsAction.Request request, ActionListener<AcknowledgedResponse> listener) {
42-
synonymsManagementAPIService.deleteSynonymsSet(request.synonymsSetId(), listener, timeout);
42+
synonymsManagementAPIService.deleteSynonymsSet(request.synonymsSetId(), listener);
4343
}
4444
}

server/src/main/java/org/elasticsearch/action/synonyms/TransportPutSynonymsAction.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ protected void doExecute(Task task, PutSynonymsAction.Request request, ActionLis
3535
synonymsManagementAPIService.putSynonymsSet(
3636
request.synonymsSetId(),
3737
request.synonymRules(),
38+
request.timeout(),
3839
listener.map(SynonymUpdateResponse::new)
3940
);
4041
}

server/src/main/java/org/elasticsearch/rest/action/synonyms/RestPutSynonymsAction.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.io.IOException;
2222
import java.util.List;
2323

24+
import static org.elasticsearch.action.synonyms.PutSynonymRuleAction.DEFAULT_TIMEOUT;
2425
import static org.elasticsearch.rest.RestRequest.Method.PUT;
2526

2627
@ServerlessScope(Scope.PUBLIC)
@@ -40,6 +41,7 @@ public List<Route> routes() {
4041
protected RestChannelConsumer prepareRequest(RestRequest restRequest, NodeClient client) throws IOException {
4142
PutSynonymsAction.Request request = new PutSynonymsAction.Request(
4243
restRequest.param("synonymsSet"),
44+
restRequest.paramAsInt("timeout", DEFAULT_TIMEOUT),
4345
restRequest.content(),
4446
restRequest.getXContentType()
4547
);

server/src/main/java/org/elasticsearch/synonyms/SynonymsManagementAPIService.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ public void getSynonymRule(String synonymSetId, String synonymRuleId, ActionList
434434
);
435435
}
436436

437-
public void deleteSynonymRule(String synonymsSetId, String synonymRuleId, ActionListener<SynonymsReloadResult> listener, int timeout) {
437+
public void deleteSynonymRule(String synonymsSetId, String synonymRuleId, ActionListener<SynonymsReloadResult> listener) {
438438
client.prepareDelete(SYNONYMS_ALIAS_NAME, internalSynonymRuleId(synonymsSetId, synonymRuleId))
439439
.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE)
440440
.execute(new DelegatingIndexNotFoundActionListener<>(synonymsSetId, listener, (l, deleteResponse) -> {
@@ -453,7 +453,7 @@ public void deleteSynonymRule(String synonymsSetId, String synonymRuleId, Action
453453
return;
454454
}
455455

456-
ensureSynonymsSearchableAndReloadAnalyzers(synonymsSetId, false, listener, UpdateSynonymsResultStatus.DELETED, timeout);
456+
reloadAnalyzers(synonymsSetId, false, listener, UpdateSynonymsResultStatus.DELETED);
457457
}));
458458
}
459459

@@ -508,10 +508,10 @@ private void deleteSynonymsSetObjects(String synonymSetId, ActionListener<BulkBy
508508
client.execute(DeleteByQueryAction.INSTANCE, dbqRequest, listener);
509509
}
510510

511-
public void deleteSynonymsSet(String synonymSetId, ActionListener<AcknowledgedResponse> listener, int timeout) {
511+
public void deleteSynonymsSet(String synonymSetId, ActionListener<AcknowledgedResponse> listener) {
512512

513513
// Previews reloading the resource to understand its usage on indices
514-
ensureSynonymsSearchableAndReloadAnalyzers(synonymSetId, true, listener.delegateFailure((reloadListener, reloadResult) -> {
514+
reloadAnalyzers(synonymSetId, true, listener.delegateFailure((reloadListener, reloadResult) -> {
515515
Map<String, ReloadAnalyzersResponse.ReloadDetails> reloadDetails = reloadResult.reloadAnalyzersResponse.getReloadDetails();
516516
if (reloadDetails.isEmpty() == false) {
517517
Set<String> indices = reloadDetails.entrySet()
@@ -548,7 +548,7 @@ public void deleteSynonymsSet(String synonymSetId, ActionListener<AcknowledgedRe
548548

549549
deleteObjectsListener.onResponse(AcknowledgedResponse.of(true));
550550
}));
551-
}), null, timeout);
551+
}), null);
552552
}
553553

554554
private <T> void ensureSynonymsSearchableAndReloadAnalyzers(

server/src/test/java/org/elasticsearch/action/synonyms/PutSynonymRuleActionRequestSerializingTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ protected Writeable.Reader<PutSynonymRuleAction.Request> instanceReader() {
2222

2323
@Override
2424
protected PutSynonymRuleAction.Request createTestInstance() {
25-
return new PutSynonymRuleAction.Request(randomIdentifier(), SynonymsTestUtils.randomSynonymRule());
25+
return new PutSynonymRuleAction.Request(randomIdentifier(), SynonymsTestUtils.randomSynonymRule(), randomNonNegativeInt());
2626
}
2727

2828
@Override

server/src/test/java/org/elasticsearch/action/synonyms/PutSynonymsActionRequestSerializingTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ protected Writeable.Reader<PutSynonymsAction.Request> instanceReader() {
2525

2626
@Override
2727
protected PutSynonymsAction.Request createTestInstance() {
28-
return new PutSynonymsAction.Request(randomIdentifier(), randomSynonymsSet());
28+
return new PutSynonymsAction.Request(randomIdentifier(), randomSynonymsSet(), randomNonNegativeInt());
2929
}
3030

3131
@Override

0 commit comments

Comments
 (0)