Skip to content

Commit cfe7504

Browse files
committed
introduce TransportRequest (with optional headers)
introduce a new class, TransportRequest, which includes headers. This class can be used when sending requests over the transport layer, and ActionRequest also extends it now. This is the first phase of the refactoring part in the transport layer and action layer to allow for simpler implementations of those as well as simpler "filtering" capabilities in the future
1 parent 15fbbd4 commit cfe7504

File tree

232 files changed

+2077
-4078
lines changed

Some content is hidden

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

232 files changed

+2077
-4078
lines changed

src/main/java/org/elasticsearch/action/Action.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
/**
2525
* Main action (used with {@link Client} API.
2626
*/
27-
public abstract class Action<Request extends ActionRequest, Response extends ActionResponse, RequestBuilder extends ActionRequestBuilder<Request, Response>>
27+
public abstract class Action<Request extends ActionRequest, Response extends ActionResponse, RequestBuilder extends ActionRequestBuilder<Request, Response, RequestBuilder>>
2828
extends GenericAction<Request, Response> {
2929

3030
protected Action(String name) {

src/main/java/org/elasticsearch/action/ActionRequest.java

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,58 @@
1919

2020
package org.elasticsearch.action;
2121

22-
import org.elasticsearch.common.io.stream.Streamable;
22+
import org.elasticsearch.common.io.stream.StreamInput;
23+
import org.elasticsearch.common.io.stream.StreamOutput;
24+
import org.elasticsearch.transport.TransportRequest;
25+
26+
import java.io.IOException;
2327

2428
/**
2529
*
2630
*/
27-
public interface ActionRequest extends Streamable {
31+
public abstract class ActionRequest<T extends ActionRequest> extends TransportRequest {
32+
33+
private boolean listenerThreaded = false;
34+
35+
protected ActionRequest() {
36+
super();
37+
}
2838

29-
ActionRequestValidationException validate();
39+
protected ActionRequest(ActionRequest request) {
40+
super(request);
41+
// this does not set the listenerThreaded API, if needed, its up to the caller to set it
42+
// since most times, we actually want it to not be threaded...
43+
//this.listenerThreaded = request.listenerThreaded();
44+
}
3045

3146
/**
3247
* Should the response listener be executed on a thread or not.
3348
* <p/>
3449
* <p>When not executing on a thread, it will either be executed on the calling thread, or
3550
* on an expensive, IO based, thread.
3651
*/
37-
boolean listenerThreaded();
52+
public final boolean listenerThreaded() {
53+
return this.listenerThreaded;
54+
}
3855

3956
/**
4057
* Sets if the response listener be executed on a thread or not.
4158
*/
42-
ActionRequest listenerThreaded(boolean listenerThreaded);
59+
@SuppressWarnings("unchecked")
60+
public final T listenerThreaded(boolean listenerThreaded) {
61+
this.listenerThreaded = listenerThreaded;
62+
return (T) this;
63+
}
64+
65+
public abstract ActionRequestValidationException validate();
66+
67+
@Override
68+
public void readFrom(StreamInput in) throws IOException {
69+
super.readFrom(in);
70+
}
71+
72+
@Override
73+
public void writeTo(StreamOutput out) throws IOException {
74+
super.writeTo(out);
75+
}
4376
}

src/main/java/org/elasticsearch/action/ActionRequestBuilder.java

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,48 @@
1919

2020
package org.elasticsearch.action;
2121

22+
import org.elasticsearch.action.support.PlainListenableActionFuture;
23+
import org.elasticsearch.client.internal.InternalGenericClient;
24+
2225
/**
2326
*
2427
*/
25-
public interface ActionRequestBuilder<Request extends ActionRequest, Response extends ActionResponse> {
28+
public abstract class ActionRequestBuilder<Request extends ActionRequest, Response extends ActionResponse, RequestBuilder extends ActionRequestBuilder> {
29+
30+
protected final Request request;
31+
32+
protected final InternalGenericClient client;
33+
34+
protected ActionRequestBuilder(InternalGenericClient client, Request request) {
35+
this.client = client;
36+
this.request = request;
37+
}
38+
39+
public Request request() {
40+
return this.request;
41+
}
42+
43+
@SuppressWarnings("unchecked")
44+
public final RequestBuilder setListenerThreaded(boolean listenerThreaded) {
45+
request.listenerThreaded(listenerThreaded);
46+
return (RequestBuilder) this;
47+
}
48+
49+
@SuppressWarnings("unchecked")
50+
public final RequestBuilder putHeader(String key, Object value) {
51+
request.putHeader(key, value);
52+
return (RequestBuilder) this;
53+
}
2654

27-
Request request();
55+
public ListenableActionFuture<Response> execute() {
56+
PlainListenableActionFuture<Response> future = new PlainListenableActionFuture<Response>(request.listenerThreaded(), client.threadPool());
57+
execute(future);
58+
return future;
59+
}
2860

29-
ListenableActionFuture<Response> execute();
61+
public void execute(ActionListener<Response> listener) {
62+
doExecute(listener);
63+
}
3064

31-
void execute(ActionListener<Response> listener);
65+
protected abstract void doExecute(ActionListener<Response> listener);
3266
}

src/main/java/org/elasticsearch/action/admin/cluster/ClusterAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
/**
2929
* Cluster action (used with {@link ClusterAdminClient} API.
3030
*/
31-
public abstract class ClusterAction<Request extends ActionRequest, Response extends ActionResponse, RequestBuilder extends ActionRequestBuilder<Request, Response>>
31+
public abstract class ClusterAction<Request extends ActionRequest, Response extends ActionResponse, RequestBuilder extends ActionRequestBuilder<Request, Response, RequestBuilder>>
3232
extends GenericAction<Request, Response> {
3333

3434
protected ClusterAction(String name) {

src/main/java/org/elasticsearch/action/admin/cluster/health/ClusterHealthRequest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
/**
3535
*
3636
*/
37-
public class ClusterHealthRequest extends MasterNodeOperationRequest {
37+
public class ClusterHealthRequest extends MasterNodeOperationRequest<ClusterHealthRequest> {
3838

3939
private String[] indices;
4040

@@ -141,7 +141,7 @@ public void readFrom(StreamInput in) throws IOException {
141141
} else {
142142
indices = new String[size];
143143
for (int i = 0; i < indices.length; i++) {
144-
indices[i] = in.readUTF();
144+
indices[i] = in.readString();
145145
}
146146
}
147147
timeout = readTimeValue(in);
@@ -150,7 +150,7 @@ public void readFrom(StreamInput in) throws IOException {
150150
}
151151
waitForRelocatingShards = in.readInt();
152152
waitForActiveShards = in.readInt();
153-
waitForNodes = in.readUTF();
153+
waitForNodes = in.readString();
154154
}
155155

156156
@Override
@@ -161,7 +161,7 @@ public void writeTo(StreamOutput out) throws IOException {
161161
} else {
162162
out.writeVInt(indices.length);
163163
for (String index : indices) {
164-
out.writeUTF(index);
164+
out.writeString(index);
165165
}
166166
}
167167
timeout.writeTo(out);
@@ -173,6 +173,6 @@ public void writeTo(StreamOutput out) throws IOException {
173173
}
174174
out.writeInt(waitForRelocatingShards);
175175
out.writeInt(waitForActiveShards);
176-
out.writeUTF(waitForNodes);
176+
out.writeString(waitForNodes);
177177
}
178178
}

src/main/java/org/elasticsearch/action/admin/cluster/health/ClusterHealthRequestBuilder.java

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,32 +20,25 @@
2020
package org.elasticsearch.action.admin.cluster.health;
2121

2222
import org.elasticsearch.action.ActionListener;
23-
import org.elasticsearch.action.admin.cluster.support.BaseClusterRequestBuilder;
23+
import org.elasticsearch.action.support.master.MasterNodeOperationRequestBuilder;
2424
import org.elasticsearch.client.ClusterAdminClient;
25+
import org.elasticsearch.client.internal.InternalClusterAdminClient;
2526
import org.elasticsearch.common.unit.TimeValue;
2627

2728
/**
2829
*
2930
*/
30-
public class ClusterHealthRequestBuilder extends BaseClusterRequestBuilder<ClusterHealthRequest, ClusterHealthResponse> {
31+
public class ClusterHealthRequestBuilder extends MasterNodeOperationRequestBuilder<ClusterHealthRequest, ClusterHealthResponse, ClusterHealthRequestBuilder> {
3132

3233
public ClusterHealthRequestBuilder(ClusterAdminClient clusterClient) {
33-
super(clusterClient, new ClusterHealthRequest());
34+
super((InternalClusterAdminClient) clusterClient, new ClusterHealthRequest());
3435
}
3536

3637
public ClusterHealthRequestBuilder setIndices(String... indices) {
3738
request.indices(indices);
3839
return this;
3940
}
4041

41-
/**
42-
* Sets the master node timeout in case the master has not yet been discovered.
43-
*/
44-
public ClusterHealthRequestBuilder setMasterNodeTimeout(TimeValue timeout) {
45-
request.masterNodeTimeout(timeout);
46-
return this;
47-
}
48-
4942
public ClusterHealthRequestBuilder setTimeout(TimeValue timeout) {
5043
request.timeout(timeout);
5144
return this;
@@ -91,6 +84,6 @@ public ClusterHealthRequestBuilder setWaitForNodes(String waitForNodes) {
9184

9285
@Override
9386
protected void doExecute(ActionListener<ClusterHealthResponse> listener) {
94-
client.health(request, listener);
87+
((ClusterAdminClient) client).health(request, listener);
9588
}
9689
}

src/main/java/org/elasticsearch/action/admin/cluster/node/hotthreads/NodesHotThreadsRequest.java

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

3030
/**
3131
*/
32-
public class NodesHotThreadsRequest extends NodesOperationRequest {
32+
public class NodesHotThreadsRequest extends NodesOperationRequest<NodesHotThreadsRequest> {
3333

3434
int threads = 3;
3535
String type = "cpu";

src/main/java/org/elasticsearch/action/admin/cluster/node/hotthreads/NodesHotThreadsRequestBuilder.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,17 @@
2020
package org.elasticsearch.action.admin.cluster.node.hotthreads;
2121

2222
import org.elasticsearch.action.ActionListener;
23-
import org.elasticsearch.action.admin.cluster.support.BaseClusterRequestBuilder;
23+
import org.elasticsearch.action.support.nodes.NodesOperationRequestBuilder;
2424
import org.elasticsearch.client.ClusterAdminClient;
25+
import org.elasticsearch.client.internal.InternalClusterAdminClient;
2526
import org.elasticsearch.common.unit.TimeValue;
2627

2728
/**
2829
*/
29-
public class NodesHotThreadsRequestBuilder extends BaseClusterRequestBuilder<NodesHotThreadsRequest, NodesHotThreadsResponse> {
30+
public class NodesHotThreadsRequestBuilder extends NodesOperationRequestBuilder<NodesHotThreadsRequest, NodesHotThreadsResponse, NodesHotThreadsRequestBuilder> {
3031

3132
public NodesHotThreadsRequestBuilder(ClusterAdminClient clusterClient) {
32-
super(clusterClient, new NodesHotThreadsRequest());
33-
}
34-
35-
public NodesHotThreadsRequestBuilder setNodesIds(String... nodesIds) {
36-
request.nodesIds(nodesIds);
37-
return this;
33+
super((InternalClusterAdminClient) clusterClient, new NodesHotThreadsRequest());
3834
}
3935

4036
public NodesHotThreadsRequestBuilder setThreads(int threads) {
@@ -54,6 +50,6 @@ public NodesHotThreadsRequestBuilder setInterval(TimeValue interval) {
5450

5551
@Override
5652
protected void doExecute(ActionListener<NodesHotThreadsResponse> listener) {
57-
client.nodesHotThreads(request, listener);
53+
((ClusterAdminClient) client).nodesHotThreads(request, listener);
5854
}
5955
}

src/main/java/org/elasticsearch/action/admin/cluster/node/hotthreads/TransportNodesHotThreadsAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ static class NodeRequest extends NodeOperationRequest {
117117
}
118118

119119
NodeRequest(String nodeId, NodesHotThreadsRequest request) {
120-
super(nodeId);
120+
super(request, nodeId);
121121
this.request = request;
122122
}
123123

src/main/java/org/elasticsearch/action/admin/cluster/node/info/NodesInfoRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
/**
2929
* A request to get node (cluster) level information.
3030
*/
31-
public class NodesInfoRequest extends NodesOperationRequest {
31+
public class NodesInfoRequest extends NodesOperationRequest<NodesInfoRequest> {
3232

3333
private boolean settings = false;
3434
private boolean os = false;

0 commit comments

Comments
 (0)