diff --git a/src/main/java/org/elasticsearch/action/bulk/BulkRequest.java b/src/main/java/org/elasticsearch/action/bulk/BulkRequest.java index a562dc046b22b..d699b8c038fc8 100644 --- a/src/main/java/org/elasticsearch/action/bulk/BulkRequest.java +++ b/src/main/java/org/elasticsearch/action/bulk/BulkRequest.java @@ -332,7 +332,7 @@ public BulkRequest add(BytesReference data, @Nullable String defaultIndex, @Null } else { throw new IllegalArgumentException("Action/metadata line [" + line + "] contains an unknown parameter [" + currentFieldName + "]"); } - } else { + } else if (token != XContentParser.Token.VALUE_NULL) { throw new IllegalArgumentException("Malformed action/metadata line [" + line + "], expected a simple value for field [" + currentFieldName + "] but found [" + token + "]"); } } diff --git a/src/test/java/org/elasticsearch/action/bulk/BulkRequestTests.java b/src/test/java/org/elasticsearch/action/bulk/BulkRequestTests.java index 8600092f1d7ff..6220958a0c6e3 100644 --- a/src/test/java/org/elasticsearch/action/bulk/BulkRequestTests.java +++ b/src/test/java/org/elasticsearch/action/bulk/BulkRequestTests.java @@ -177,4 +177,12 @@ public void testSimpleBulk9() throws Exception { e.getMessage().contains("Malformed action/metadata line [3], expected START_OBJECT or END_OBJECT but found [START_ARRAY]"), equalTo(true)); } } + + @Test + public void testSimpleBulk10() throws Exception { + String bulkAction = copyToStringFromClasspath("/org/elasticsearch/action/bulk/simple-bulk10.json"); + BulkRequest bulkRequest = new BulkRequest(); + bulkRequest.add(bulkAction.getBytes(Charsets.UTF_8), 0, bulkAction.length(), null, null); + assertThat(bulkRequest.numberOfActions(), equalTo(9)); + } } diff --git a/src/test/java/org/elasticsearch/action/bulk/simple-bulk10.json b/src/test/java/org/elasticsearch/action/bulk/simple-bulk10.json new file mode 100644 index 0000000000000..3556dc261b037 --- /dev/null +++ b/src/test/java/org/elasticsearch/action/bulk/simple-bulk10.json @@ -0,0 +1,15 @@ +{ "index" : {"_index":null, "_type":"type1", "_id":"0"} } +{ "field1" : "value1" } +{ "index" : {"_index":"test", "_type":null, "_id":"0"} } +{ "field1" : "value1" } +{ "index" : {"_index":"test", "_type":"type1", "_id":null} } +{ "field1" : "value1" } +{ "delete" : {"_index":null, "_type":"type1", "_id":"0"} } +{ "delete" : {"_index":"test", "_type":null, "_id":"0"} } +{ "delete" : {"_index":"test", "_type":"type1", "_id":null} } +{ "create" : {"_index":null, "_type":"type1", "_id":"0"} } +{ "field1" : "value1" } +{ "create" : {"_index":"test", "_type":null, "_id":"0"} } +{ "field1" : "value1" } +{ "create" : {"_index":"test", "_type":"type1", "_id":null} } +{ "field1" : "value1" }