Skip to content

Commit acb811e

Browse files
Dry up Empty ActionResponse Implementations (#65035)
No need to have multiple empty action response implementations. => Use a single class and singleton for all of them like we do for empty flat transport responses.
1 parent 0c4e381 commit acb811e

File tree

42 files changed

+215
-520
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+215
-520
lines changed

server/src/main/java/org/elasticsearch/action/ActionResponse.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020
package org.elasticsearch.action;
2121

2222
import org.elasticsearch.common.io.stream.StreamInput;
23+
import org.elasticsearch.common.io.stream.StreamOutput;
24+
import org.elasticsearch.common.xcontent.ToXContentObject;
25+
import org.elasticsearch.common.xcontent.XContentBuilder;
2326
import org.elasticsearch.transport.TransportResponse;
2427

2528
import java.io.IOException;
@@ -35,4 +38,21 @@ public ActionResponse() {
3538
public ActionResponse(StreamInput in) throws IOException {
3639
super(in);
3740
}
41+
42+
public static final class Empty extends ActionResponse implements ToXContentObject {
43+
public static final ActionResponse.Empty INSTANCE = new ActionResponse.Empty();
44+
45+
@Override
46+
public String toString() {
47+
return "EmptyActionResponse{}";
48+
}
49+
50+
@Override
51+
public void writeTo(StreamOutput out) {}
52+
53+
@Override
54+
public XContentBuilder toXContent(final XContentBuilder builder, final Params params) {
55+
return builder;
56+
}
57+
}
3858
}

server/src/main/java/org/elasticsearch/action/admin/cluster/configuration/AddVotingConfigExclusionsAction.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,14 @@
1818
*/
1919
package org.elasticsearch.action.admin.cluster.configuration;
2020

21+
import org.elasticsearch.action.ActionResponse;
2122
import org.elasticsearch.action.ActionType;
2223

23-
public class AddVotingConfigExclusionsAction extends ActionType<AddVotingConfigExclusionsResponse> {
24+
public class AddVotingConfigExclusionsAction extends ActionType<ActionResponse.Empty> {
2425
public static final AddVotingConfigExclusionsAction INSTANCE = new AddVotingConfigExclusionsAction();
2526
public static final String NAME = "cluster:admin/voting_config/add_exclusions";
2627

2728
private AddVotingConfigExclusionsAction() {
28-
super(NAME, AddVotingConfigExclusionsResponse::new);
29+
super(NAME, in -> ActionResponse.Empty.INSTANCE);
2930
}
3031
}

server/src/main/java/org/elasticsearch/action/admin/cluster/configuration/AddVotingConfigExclusionsResponse.java

Lines changed: 0 additions & 49 deletions
This file was deleted.

server/src/main/java/org/elasticsearch/action/admin/cluster/configuration/ClearVotingConfigExclusionsAction.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,14 @@
1818
*/
1919
package org.elasticsearch.action.admin.cluster.configuration;
2020

21+
import org.elasticsearch.action.ActionResponse;
2122
import org.elasticsearch.action.ActionType;
2223

23-
public class ClearVotingConfigExclusionsAction extends ActionType<ClearVotingConfigExclusionsResponse> {
24+
public class ClearVotingConfigExclusionsAction extends ActionType<ActionResponse.Empty> {
2425
public static final ClearVotingConfigExclusionsAction INSTANCE = new ClearVotingConfigExclusionsAction();
2526
public static final String NAME = "cluster:admin/voting_config/clear_exclusions";
2627

2728
private ClearVotingConfigExclusionsAction() {
28-
super(NAME, ClearVotingConfigExclusionsResponse::new);
29+
super(NAME, in -> ActionResponse.Empty.INSTANCE);
2930
}
3031
}

server/src/main/java/org/elasticsearch/action/admin/cluster/configuration/ClearVotingConfigExclusionsResponse.java

Lines changed: 0 additions & 48 deletions
This file was deleted.

server/src/main/java/org/elasticsearch/action/admin/cluster/configuration/TransportAddVotingConfigExclusionsAction.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.elasticsearch.ElasticsearchException;
2424
import org.elasticsearch.ElasticsearchTimeoutException;
2525
import org.elasticsearch.action.ActionListener;
26+
import org.elasticsearch.action.ActionResponse;
2627
import org.elasticsearch.action.support.ActionFilters;
2728
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
2829
import org.elasticsearch.cluster.ClusterState;
@@ -52,7 +53,7 @@
5253
import java.util.stream.Collectors;
5354

5455
public class TransportAddVotingConfigExclusionsAction extends TransportMasterNodeAction<AddVotingConfigExclusionsRequest,
55-
AddVotingConfigExclusionsResponse> {
56+
ActionResponse.Empty> {
5657

5758
private static final Logger logger = LogManager.getLogger(TransportAddVotingConfigExclusionsAction.class);
5859

@@ -66,7 +67,7 @@ public TransportAddVotingConfigExclusionsAction(Settings settings, ClusterSettin
6667
ClusterService clusterService, ThreadPool threadPool, ActionFilters actionFilters,
6768
IndexNameExpressionResolver indexNameExpressionResolver) {
6869
super(AddVotingConfigExclusionsAction.NAME, transportService, clusterService, threadPool, actionFilters,
69-
AddVotingConfigExclusionsRequest::new, indexNameExpressionResolver, AddVotingConfigExclusionsResponse::new,
70+
AddVotingConfigExclusionsRequest::new, indexNameExpressionResolver, in -> ActionResponse.Empty.INSTANCE,
7071
ThreadPool.Names.SAME);
7172

7273
maxVotingConfigExclusions = MAXIMUM_VOTING_CONFIG_EXCLUSIONS_SETTING.get(settings);
@@ -79,7 +80,7 @@ private void setMaxVotingConfigExclusions(int maxVotingConfigExclusions) {
7980

8081
@Override
8182
protected void masterOperation(Task task, AddVotingConfigExclusionsRequest request, ClusterState state,
82-
ActionListener<AddVotingConfigExclusionsResponse> listener) throws Exception {
83+
ActionListener<ActionResponse.Empty> listener) throws Exception {
8384

8485
resolveVotingConfigExclusionsAndCheckMaximum(request, state, maxVotingConfigExclusions);
8586
// throws IAE if no nodes matched or maximum exceeded
@@ -124,7 +125,7 @@ public void clusterStateProcessed(String source, ClusterState oldState, ClusterS
124125
final Listener clusterStateListener = new Listener() {
125126
@Override
126127
public void onNewClusterState(ClusterState state) {
127-
listener.onResponse(new AddVotingConfigExclusionsResponse());
128+
listener.onResponse(ActionResponse.Empty.INSTANCE);
128129
}
129130

130131
@Override

server/src/main/java/org/elasticsearch/action/admin/cluster/configuration/TransportClearVotingConfigExclusionsAction.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.elasticsearch.ElasticsearchException;
2424
import org.elasticsearch.ElasticsearchTimeoutException;
2525
import org.elasticsearch.action.ActionListener;
26+
import org.elasticsearch.action.ActionResponse;
2627
import org.elasticsearch.action.support.ActionFilters;
2728
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
2829
import org.elasticsearch.cluster.ClusterState;
@@ -46,7 +47,7 @@
4647
import java.util.function.Predicate;
4748

4849
public class TransportClearVotingConfigExclusionsAction
49-
extends TransportMasterNodeAction<ClearVotingConfigExclusionsRequest, ClearVotingConfigExclusionsResponse> {
50+
extends TransportMasterNodeAction<ClearVotingConfigExclusionsRequest, ActionResponse.Empty> {
5051

5152
private static final Logger logger = LogManager.getLogger(TransportClearVotingConfigExclusionsAction.class);
5253

@@ -55,13 +56,13 @@ public TransportClearVotingConfigExclusionsAction(TransportService transportServ
5556
ThreadPool threadPool, ActionFilters actionFilters,
5657
IndexNameExpressionResolver indexNameExpressionResolver) {
5758
super(ClearVotingConfigExclusionsAction.NAME, transportService, clusterService, threadPool, actionFilters,
58-
ClearVotingConfigExclusionsRequest::new, indexNameExpressionResolver, ClearVotingConfigExclusionsResponse::new,
59+
ClearVotingConfigExclusionsRequest::new, indexNameExpressionResolver, in -> ActionResponse.Empty.INSTANCE,
5960
ThreadPool.Names.SAME);
6061
}
6162

6263
@Override
6364
protected void masterOperation(Task task, ClearVotingConfigExclusionsRequest request, ClusterState initialState,
64-
ActionListener<ClearVotingConfigExclusionsResponse> listener) throws Exception {
65+
ActionListener<ActionResponse.Empty> listener) throws Exception {
6566

6667
final long startTimeMillis = threadPool.relativeTimeInMillis();
6768

@@ -104,7 +105,7 @@ public void onTimeout(TimeValue timeout) {
104105
}
105106

106107
private void submitClearVotingConfigExclusionsTask(ClearVotingConfigExclusionsRequest request, long startTimeMillis,
107-
ActionListener<ClearVotingConfigExclusionsResponse> listener) {
108+
ActionListener<ActionResponse.Empty> listener) {
108109
clusterService.submitStateUpdateTask("clear-voting-config-exclusions", new ClusterStateUpdateTask(Priority.URGENT,
109110
TimeValue.timeValueMillis(
110111
Math.max(0, request.getTimeout().millis() + startTimeMillis - threadPool.relativeTimeInMillis()))) {
@@ -124,7 +125,7 @@ public void onFailure(String source, Exception e) {
124125

125126
@Override
126127
public void clusterStateProcessed(String source, ClusterState oldState, ClusterState newState) {
127-
listener.onResponse(new ClearVotingConfigExclusionsResponse());
128+
listener.onResponse(ActionResponse.Empty.INSTANCE);
128129
}
129130
});
130131
}

0 commit comments

Comments
 (0)