When dynamically updating mappings, these fields can cause the document parser to throw an NPE since the parent mapper doesn't exist for the line:
ObjectMapper withNewMapper = parentMappers.get(lastIndex).mappingUpdate(mapper);
Causing this exception:
Caused by: java.lang.NullPointerException
at org.elasticsearch.index.mapper.DocumentParser.createUpdate(DocumentParser.java:309) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.index.mapper.DocumentParser.createDynamicUpdate(DocumentParser.java:190) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.index.mapper.DocumentParser.parseDocument(DocumentParser.java:78) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:275) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.index.shard.IndexShard.prepareIndex(IndexShard.java:533) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.index.shard.IndexShard.prepareIndexOnPrimary(IndexShard.java:510) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.index.TransportIndexAction.prepareIndexOperationOnPrimary(TransportIndexAction.java:174) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.index.TransportIndexAction.executeIndexRequestOnPrimary(TransportIndexAction.java:179) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.index.TransportIndexAction.onPrimaryShard(TransportIndexAction.java:144) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.index.TransportIndexAction.onPrimaryShard(TransportIndexAction.java:63) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.support.replication.TransportWriteAction.shardOperationOnPrimary(TransportWriteAction.java:75) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.support.replication.TransportWriteAction.shardOperationOnPrimary(TransportWriteAction.java:48) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryShardReference.perform(TransportReplicationAction.java:905) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryShardReference.perform(TransportReplicationAction.java:875) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.support.replication.ReplicationOperation.execute(ReplicationOperation.java:113) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.support.replication.TransportReplicationAction$AsyncPrimaryAction.onResponse(TransportReplicationAction.java:323) [elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.support.replication.TransportReplicationAction$AsyncPrimaryAction.onResponse(TransportReplicationAction.java:258) [elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.support.replication.TransportReplicationAction$1.onResponse(TransportReplicationAction.java:855) [elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.support.replication.TransportReplicationAction$1.onResponse(TransportReplicationAction.java:852) [elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.index.shard.IndexShardOperationsLock.acquire(IndexShardOperationsLock.java:142) [elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.index.shard.IndexShard.acquirePrimaryOperationLock(IndexShard.java:1648) [elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.support.replication.TransportReplicationAction.acquirePrimaryShardReference(TransportReplicationAction.java:864) [elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.support.replication.TransportReplicationAction.access$400(TransportReplicationAction.java:90) [elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.support.replication.TransportReplicationAction$AsyncPrimaryAction.doRun(TransportReplicationAction.java:275) [elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) [elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryOperationTransportHandler.messageReceived(TransportReplicationAction.java:254) [elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryOperationTransportHandler.messageReceived(TransportReplicationAction.java:246) [elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:69) [elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.transport.TransportService$6.doRun(TransportService.java:577) [elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:527) [elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) [elasticsearch-5.1.2.jar:5.1.2]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_111]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_111]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_111]
Which can be reproduced with:
DELETE /i
POST /i/d?pretty
{
"top.": [
{
"foo.": [{
"thing": "bah"
}]
}
]
}
POST /i/d?pretty
{
"top.": [
{
"foo.": [{
"bar.": {
"aoeu.": {
"a": 1,
"b": 2
},
"baz": "eggplant"
}
}]
}
]
}
When dynamically updating mappings, these fields can cause the document parser to throw an NPE since the parent mapper doesn't exist for the line:
Causing this exception:
Which can be reproduced with: