Skip to content

Commit a4c45b5

Browse files
authored
Replace Streamable w/ Writeable in SingleShardRequest and subclasses (#43222) (#43364)
Backport of: #43222 This commit replaces usages of Streamable with Writeable for the SingleShardRequest / TransportSingleShardAction classes and subclasses of these classes. Note that where possible response fields were made final and default constructors were removed. Relates to #34389
1 parent 86b58d9 commit a4c45b5

File tree

21 files changed

+216
-266
lines changed

21 files changed

+216
-266
lines changed

modules/lang-painless/src/main/java/org/elasticsearch/painless/action/PainlessExecuteAction.java

+18-20
Original file line numberDiff line numberDiff line change
@@ -265,26 +265,37 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
265265

266266
}
267267

268-
private Script script;
269-
private ScriptContext<?> context = PainlessTestScript.CONTEXT;
270-
private ContextSetup contextSetup;
268+
private final Script script;
269+
private final ScriptContext<?> context;
270+
private final ContextSetup contextSetup;
271271

272272
static Request parse(XContentParser parser) throws IOException {
273273
return PARSER.parse(parser, null);
274274
}
275275

276276
Request(Script script, String scriptContextName, ContextSetup setup) {
277277
this.script = Objects.requireNonNull(script);
278-
if (scriptContextName != null) {
279-
this.context = fromScriptContextName(scriptContextName);
280-
}
278+
this.context = scriptContextName != null ? fromScriptContextName(scriptContextName) : PainlessTestScript.CONTEXT;
281279
if (setup != null) {
282280
this.contextSetup = setup;
283281
index(contextSetup.index);
282+
} else {
283+
contextSetup = null;
284284
}
285285
}
286286

287-
Request() {
287+
Request(StreamInput in) throws IOException {
288+
super(in);
289+
script = new Script(in);
290+
if (in.getVersion().before(Version.V_6_4_0)) {
291+
byte scriptContextId = in.readByte();
292+
assert scriptContextId == 0;
293+
context = null;
294+
contextSetup = null;
295+
} else {
296+
context = fromScriptContextName(in.readString());
297+
contextSetup = in.readOptionalWriteable(ContextSetup::new);
298+
}
288299
}
289300

290301
public Script getScript() {
@@ -316,19 +327,6 @@ public ActionRequestValidationException validate() {
316327
return validationException;
317328
}
318329

319-
@Override
320-
public void readFrom(StreamInput in) throws IOException {
321-
super.readFrom(in);
322-
script = new Script(in);
323-
if (in.getVersion().before(Version.V_6_4_0)) {
324-
byte scriptContextId = in.readByte();
325-
assert scriptContextId == 0;
326-
} else {
327-
context = fromScriptContextName(in.readString());
328-
contextSetup = in.readOptionalWriteable(ContextSetup::new);
329-
}
330-
}
331-
332330
@Override
333331
public void writeTo(StreamOutput out) throws IOException {
334332
super.writeTo(out);

modules/lang-painless/src/test/java/org/elasticsearch/painless/action/PainlessExecuteRequestTests.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.elasticsearch.common.bytes.BytesReference;
2222
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
2323
import org.elasticsearch.common.io.stream.StreamInput;
24+
import org.elasticsearch.common.io.stream.Writeable;
2425
import org.elasticsearch.common.settings.Settings;
2526
import org.elasticsearch.common.xcontent.LoggingDeprecationHandler;
2627
import org.elasticsearch.common.xcontent.NamedXContentRegistry;
@@ -35,15 +36,15 @@
3536
import org.elasticsearch.script.ScriptContext;
3637
import org.elasticsearch.script.ScriptType;
3738
import org.elasticsearch.search.SearchModule;
38-
import org.elasticsearch.test.AbstractStreamableTestCase;
39+
import org.elasticsearch.test.AbstractWireSerializingTestCase;
3940

4041
import java.io.IOException;
4142
import java.io.UncheckedIOException;
4243
import java.util.Collections;
4344

4445
import static org.hamcrest.Matchers.equalTo;
4546

46-
public class PainlessExecuteRequestTests extends AbstractStreamableTestCase<PainlessExecuteAction.Request> {
47+
public class PainlessExecuteRequestTests extends AbstractWireSerializingTestCase<PainlessExecuteAction.Request> {
4748

4849
// Testing XContent serialization manually here, because the xContentType field in ContextSetup determines
4950
// how the request needs to parse and the xcontent serialization framework randomizes that. The XContentType
@@ -89,8 +90,8 @@ protected PainlessExecuteAction.Request createTestInstance() {
8990
}
9091

9192
@Override
92-
protected PainlessExecuteAction.Request createBlankInstance() {
93-
return new PainlessExecuteAction.Request();
93+
protected Writeable.Reader<PainlessExecuteAction.Request> instanceReader() {
94+
return PainlessExecuteAction.Request::new;
9495
}
9596

9697
public void testValidate() {

server/src/main/java/org/elasticsearch/action/admin/indices/analyze/AnalyzeAction.java

+13-14
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,19 @@ public static class Request extends SingleShardRequest<Request> {
8383
public Request() {
8484
}
8585

86+
Request(StreamInput in) throws IOException {
87+
super(in);
88+
text = in.readStringArray();
89+
analyzer = in.readOptionalString();
90+
tokenizer = in.readOptionalWriteable(NameOrDefinition::new);
91+
tokenFilters.addAll(in.readList(NameOrDefinition::new));
92+
charFilters.addAll(in.readList(NameOrDefinition::new));
93+
field = in.readOptionalString();
94+
explain = in.readBoolean();
95+
attributes = in.readStringArray();
96+
normalizer = in.readOptionalString();
97+
}
98+
8699
/**
87100
* Constructs a new analyzer request for the provided index.
88101
*
@@ -240,20 +253,6 @@ public ActionRequestValidationException validate() {
240253
return validationException;
241254
}
242255

243-
@Override
244-
public void readFrom(StreamInput in) throws IOException {
245-
super.readFrom(in);
246-
text = in.readStringArray();
247-
analyzer = in.readOptionalString();
248-
tokenizer = in.readOptionalWriteable(NameOrDefinition::new);
249-
tokenFilters.addAll(in.readList(NameOrDefinition::new));
250-
charFilters.addAll(in.readList(NameOrDefinition::new));
251-
field = in.readOptionalString();
252-
explain = in.readBoolean();
253-
attributes = in.readStringArray();
254-
normalizer = in.readOptionalString();
255-
}
256-
257256
@Override
258257
public void writeTo(StreamOutput out) throws IOException {
259258
super.writeTo(out);

server/src/main/java/org/elasticsearch/action/admin/indices/mapping/get/GetFieldMappingsIndexRequest.java

+11-16
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,27 @@
2323
import org.elasticsearch.action.OriginalIndices;
2424
import org.elasticsearch.action.support.IndicesOptions;
2525
import org.elasticsearch.action.support.single.shard.SingleShardRequest;
26-
import org.elasticsearch.common.Strings;
2726
import org.elasticsearch.common.io.stream.StreamInput;
2827
import org.elasticsearch.common.io.stream.StreamOutput;
2928

3029
import java.io.IOException;
3130

3231
public class GetFieldMappingsIndexRequest extends SingleShardRequest<GetFieldMappingsIndexRequest> {
3332

34-
private boolean probablySingleFieldRequest;
35-
private boolean includeDefaults;
36-
private String[] fields = Strings.EMPTY_ARRAY;
37-
private String[] types = Strings.EMPTY_ARRAY;
33+
private final boolean probablySingleFieldRequest;
34+
private final boolean includeDefaults;
35+
private final String[] fields;
36+
private final String[] types;
3837

3938
private OriginalIndices originalIndices;
4039

41-
public GetFieldMappingsIndexRequest() {
40+
GetFieldMappingsIndexRequest(StreamInput in) throws IOException {
41+
super(in);
42+
types = in.readStringArray();
43+
fields = in.readStringArray();
44+
includeDefaults = in.readBoolean();
45+
probablySingleFieldRequest = in.readBoolean();
46+
originalIndices = OriginalIndices.readOriginalIndices(in);
4247
}
4348

4449
GetFieldMappingsIndexRequest(GetFieldMappingsRequest other, String index, boolean probablySingleFieldRequest) {
@@ -92,14 +97,4 @@ public void writeTo(StreamOutput out) throws IOException {
9297
OriginalIndices.writeOriginalIndices(originalIndices, out);
9398
}
9499

95-
@Override
96-
public void readFrom(StreamInput in) throws IOException {
97-
super.readFrom(in);
98-
types = in.readStringArray();
99-
fields = in.readStringArray();
100-
includeDefaults = in.readBoolean();
101-
probablySingleFieldRequest = in.readBoolean();
102-
originalIndices = OriginalIndices.readOriginalIndices(in);
103-
}
104-
105100
}

server/src/main/java/org/elasticsearch/action/explain/ExplainRequest.java

+13-14
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,19 @@ public ExplainRequest(String index, String id) {
7474
this.id = id;
7575
}
7676

77+
ExplainRequest(StreamInput in) throws IOException {
78+
super(in);
79+
type = in.readString();
80+
id = in.readString();
81+
routing = in.readOptionalString();
82+
preference = in.readOptionalString();
83+
query = in.readNamedWriteable(QueryBuilder.class);
84+
filteringAlias = new AliasFilter(in);
85+
storedFields = in.readOptionalStringArray();
86+
fetchSourceContext = in.readOptionalWriteable(FetchSourceContext::new);
87+
nowInMillis = in.readVLong();
88+
}
89+
7790
/**
7891
* @deprecated Types are in the process of being removed.
7992
*/
@@ -184,20 +197,6 @@ public ActionRequestValidationException validate() {
184197
return validationException;
185198
}
186199

187-
@Override
188-
public void readFrom(StreamInput in) throws IOException {
189-
super.readFrom(in);
190-
type = in.readString();
191-
id = in.readString();
192-
routing = in.readOptionalString();
193-
preference = in.readOptionalString();
194-
query = in.readNamedWriteable(QueryBuilder.class);
195-
filteringAlias = new AliasFilter(in);
196-
storedFields = in.readOptionalStringArray();
197-
fetchSourceContext = in.readOptionalWriteable(FetchSourceContext::new);
198-
nowInMillis = in.readVLong();
199-
}
200-
201200
@Override
202201
public void writeTo(StreamOutput out) throws IOException {
203202
super.writeTo(out);

server/src/main/java/org/elasticsearch/action/fieldcaps/FieldCapabilitiesIndexRequest.java

+11-14
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,19 @@
3131

3232
public class FieldCapabilitiesIndexRequest extends SingleShardRequest<FieldCapabilitiesIndexRequest> {
3333

34-
private String[] fields;
35-
private OriginalIndices originalIndices;
34+
private final String[] fields;
35+
private final OriginalIndices originalIndices;
3636

3737
// For serialization
38-
FieldCapabilitiesIndexRequest() {}
38+
FieldCapabilitiesIndexRequest(StreamInput in) throws IOException {
39+
super(in);
40+
fields = in.readStringArray();
41+
if (in.getVersion().onOrAfter(Version.V_6_2_0)) {
42+
originalIndices = OriginalIndices.readOriginalIndices(in);
43+
} else {
44+
originalIndices = OriginalIndices.NONE;
45+
}
46+
}
3947

4048
FieldCapabilitiesIndexRequest(String[] fields, String index, OriginalIndices originalIndices) {
4149
super(index);
@@ -62,17 +70,6 @@ public IndicesOptions indicesOptions() {
6270
return originalIndices.indicesOptions();
6371
}
6472

65-
@Override
66-
public void readFrom(StreamInput in) throws IOException {
67-
super.readFrom(in);
68-
fields = in.readStringArray();
69-
if (in.getVersion().onOrAfter(Version.V_6_2_0)) {
70-
originalIndices = OriginalIndices.readOriginalIndices(in);
71-
} else {
72-
originalIndices = OriginalIndices.NONE;
73-
}
74-
}
75-
7673
@Override
7774
public void writeTo(StreamOutput out) throws IOException {
7875
super.writeTo(out);

server/src/main/java/org/elasticsearch/action/get/GetRequest.java

+18-19
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,24 @@ public GetRequest() {
7070
type = MapperService.SINGLE_MAPPING_NAME;
7171
}
7272

73+
GetRequest(StreamInput in) throws IOException {
74+
super(in);
75+
type = in.readString();
76+
id = in.readString();
77+
routing = in.readOptionalString();
78+
if (in.getVersion().before(Version.V_7_0_0)) {
79+
in.readOptionalString();
80+
}
81+
preference = in.readOptionalString();
82+
refresh = in.readBoolean();
83+
storedFields = in.readOptionalStringArray();
84+
realtime = in.readBoolean();
85+
86+
this.versionType = VersionType.fromValue(in.readByte());
87+
this.version = in.readLong();
88+
fetchSourceContext = in.readOptionalWriteable(FetchSourceContext::new);
89+
}
90+
7391
/**
7492
* Constructs a new get request against the specified index. The {@link #id(String)} must also be set.
7593
*/
@@ -262,25 +280,6 @@ public VersionType versionType() {
262280
return this.versionType;
263281
}
264282

265-
@Override
266-
public void readFrom(StreamInput in) throws IOException {
267-
super.readFrom(in);
268-
type = in.readString();
269-
id = in.readString();
270-
routing = in.readOptionalString();
271-
if (in.getVersion().before(Version.V_7_0_0)) {
272-
in.readOptionalString();
273-
}
274-
preference = in.readOptionalString();
275-
refresh = in.readBoolean();
276-
storedFields = in.readOptionalStringArray();
277-
realtime = in.readBoolean();
278-
279-
this.versionType = VersionType.fromValue(in.readByte());
280-
this.version = in.readLong();
281-
fetchSourceContext = in.readOptionalWriteable(FetchSourceContext::new);
282-
}
283-
284283
@Override
285284
public void writeTo(StreamOutput out) throws IOException {
286285
super.writeTo(out);

server/src/main/java/org/elasticsearch/action/get/MultiGetShardRequest.java

+15-20
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,26 @@ public class MultiGetShardRequest extends SingleShardRequest<MultiGetShardReques
3333

3434
private int shardId;
3535
private String preference;
36-
boolean realtime = true;
37-
boolean refresh;
36+
private boolean realtime;
37+
private boolean refresh;
3838

3939
IntArrayList locations;
4040
List<MultiGetRequest.Item> items;
4141

42-
public MultiGetShardRequest() {
42+
MultiGetShardRequest(StreamInput in) throws IOException {
43+
super(in);
44+
int size = in.readVInt();
45+
locations = new IntArrayList(size);
46+
items = new ArrayList<>(size);
4347

48+
for (int i = 0; i < size; i++) {
49+
locations.add(in.readVInt());
50+
items.add(MultiGetRequest.Item.readItem(in));
51+
}
52+
53+
preference = in.readOptionalString();
54+
refresh = in.readBoolean();
55+
realtime = in.readBoolean();
4456
}
4557

4658
MultiGetShardRequest(MultiGetRequest multiGetRequest, String index, int shardId) {
@@ -108,23 +120,6 @@ public String[] indices() {
108120
return indices;
109121
}
110122

111-
@Override
112-
public void readFrom(StreamInput in) throws IOException {
113-
super.readFrom(in);
114-
int size = in.readVInt();
115-
locations = new IntArrayList(size);
116-
items = new ArrayList<>(size);
117-
118-
for (int i = 0; i < size; i++) {
119-
locations.add(in.readVInt());
120-
items.add(MultiGetRequest.Item.readItem(in));
121-
}
122-
123-
preference = in.readOptionalString();
124-
refresh = in.readBoolean();
125-
realtime = in.readBoolean();
126-
}
127-
128123
@Override
129124
public void writeTo(StreamOutput out) throws IOException {
130125
super.writeTo(out);

0 commit comments

Comments
 (0)