StackOverflowError when calling BulkRequest#add (#41672)

Removing of payload in BulkRequest (#39843) had a side effect of making
`BulkRequest.add(DocWriteRequest<?>...)` (with varargs) recursive, thus
leading to StackOverflowError. This PR adds a small change in
RequestConvertersTests to show the error and the corresponding fix in
`BulkRequest`.

Fixes #41668
This commit is contained in:
Guillaume Darmont 2019-05-04 17:00:34 +02:00 committed by Michael Basnight
parent d4b5933225
commit 3e231bbad6
2 changed files with 4 additions and 2 deletions

View File

@ -880,6 +880,7 @@ public class RequestConvertersTests extends ESTestCase {
XContentType xContentType = randomFrom(XContentType.JSON, XContentType.SMILE);
int nbItems = randomIntBetween(10, 100);
DocWriteRequest<?>[] requests = new DocWriteRequest<?>[nbItems];
for (int i = 0; i < nbItems; i++) {
String index = randomAlphaOfLength(5);
String id = randomAlphaOfLength(5);
@ -919,8 +920,9 @@ public class RequestConvertersTests extends ESTestCase {
docWriteRequest.setIfSeqNo(randomNonNegativeLong());
docWriteRequest.setIfPrimaryTerm(randomLongBetween(1, 200));
}
bulkRequest.add(docWriteRequest);
requests[i] = docWriteRequest;
}
bulkRequest.add(requests);
Request request = RequestConverters.bulk(bulkRequest);
assertEquals("/_bulk", request.getEndpoint());

View File

@ -99,7 +99,7 @@ public class BulkRequest extends ActionRequest implements CompositeIndicesReques
*/
public BulkRequest add(DocWriteRequest<?>... requests) {
for (DocWriteRequest<?> request : requests) {
add(request, null);
add(request);
}
return this;
}