Skip to content

Commit 02bd52a

Browse files
committed
Bulk: allow null values in action/metadata line parameters
Closes elastic#11458
1 parent 964dd5c commit 02bd52a

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

src/main/java/org/elasticsearch/action/bulk/BulkRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ public BulkRequest add(BytesReference data, @Nullable String defaultIndex, @Null
330330
} else {
331331
throw new IllegalArgumentException("Action/metadata line [" + line + "] contains an unknown parameter [" + currentFieldName + "]");
332332
}
333-
} else {
333+
} else if (token != XContentParser.Token.VALUE_NULL) {
334334
throw new IllegalArgumentException("Malformed action/metadata line [" + line + "], expected a simple value for field [" + currentFieldName + "] but found [" + token + "]");
335335
}
336336
}

src/test/java/org/elasticsearch/action/bulk/BulkRequestTests.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,4 +169,12 @@ public void testSimpleBulk9() throws Exception {
169169
e.getMessage().contains("Malformed action/metadata line [3], expected START_OBJECT or END_OBJECT but found [START_ARRAY]"), equalTo(true));
170170
}
171171
}
172+
173+
@Test
174+
public void testSimpleBulk10() throws Exception {
175+
String bulkAction = copyToStringFromClasspath("/org/elasticsearch/action/bulk/simple-bulk10.json");
176+
BulkRequest bulkRequest = new BulkRequest();
177+
bulkRequest.add(bulkAction.getBytes(Charsets.UTF_8), 0, bulkAction.length(), null, null);
178+
assertThat(bulkRequest.numberOfActions(), equalTo(9));
179+
}
172180
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{ "index" : {"_index":null, "_type":"type1", "_id":"0"} }
2+
{ "field1" : "value1" }
3+
{ "index" : {"_index":"test", "_type":null, "_id":"0"} }
4+
{ "field1" : "value1" }
5+
{ "index" : {"_index":"test", "_type":"type1", "_id":null} }
6+
{ "field1" : "value1" }
7+
{ "delete" : {"_index":null, "_type":"type1", "_id":"0"} }
8+
{ "delete" : {"_index":"test", "_type":null, "_id":"0"} }
9+
{ "delete" : {"_index":"test", "_type":"type1", "_id":null} }
10+
{ "create" : {"_index":null, "_type":"type1", "_id":"0"} }
11+
{ "field1" : "value1" }
12+
{ "create" : {"_index":"test", "_type":null, "_id":"0"} }
13+
{ "field1" : "value1" }
14+
{ "create" : {"_index":"test", "_type":"type1", "_id":null} }
15+
{ "field1" : "value1" }

0 commit comments

Comments
 (0)