Skip to content

NPE in XContentMapValues via MultiSearchRequest #129631

@astefan

Description

@astefan

Elasticsearch Version

main

Installed Plugins

No response

Java Version

bundled

OS Version

irrelevant

Problem Description

For an _msearch request, if the body uses null for index, there's a NPE that's bubbling up. This should be handled in a more user friendly way by rejecting the request with a 400 error message.

Steps to Reproduce

/_msearch request with body content as:

{"index": null}
{"query" : {"match_all" : {}}}

Gives an error

{
    "error": {
        "root_cause": [
            {
                "type": "null_pointer_exception",
                "reason": "Cannot invoke \"Object.toString()\" because \"node\" is null"
            }
        ],
        "type": "null_pointer_exception",
        "reason": "Cannot invoke \"Object.toString()\" because \"node\" is null"
    },
    "status": 500
}

Logs (if relevant)

[WARN ][r.suppressed             ] [runTask-0] path: /employees/_msearch, params: {index=employees}, status: 500 java.lang.NullPointerException: Cannot invoke "Object.toString()" because "node" is null
        at org.elasticsearch.server@9.1.0-SNAPSHOT/org.elasticsearch.common.xcontent.support.XContentMapValues.nodeStringArrayValue(XContentMapValues.java:571)
        at org.elasticsearch.server@9.1.0-SNAPSHOT/org.elasticsearch.action.search.MultiSearchRequest.readMultiLineFormat(MultiSearchRequest.java:249)
        at org.elasticsearch.server@9.1.0-SNAPSHOT/org.elasticsearch.rest.action.search.RestMultiSearchAction.parseMultiLineRequest(RestMultiSearchAction.java:190)
        at org.elasticsearch.server@9.1.0-SNAPSHOT/org.elasticsearch.rest.action.search.RestMultiSearchAction.parseRequest(RestMultiSearchAction.java:133)
        at org.elasticsearch.server@9.1.0-SNAPSHOT/org.elasticsearch.rest.action.search.RestMultiSearchAction.parseRequest(RestMultiSearchAction.java:98)
        at org.elasticsearch.server@9.1.0-SNAPSHOT/org.elasticsearch.rest.action.search.RestMultiSearchAction.prepareRequest(RestMultiSearchAction.java:78)
        at org.elasticsearch.server@9.1.0-SNAPSHOT/org.elasticsearch.rest.BaseRestHandler.handleRequest(BaseRestHandler.java:99)
        at org.elasticsearch.server@9.1.0-SNAPSHOT/org.elasticsearch.rest.RestController$1.onResponse(RestController.java:468)
        at org.elasticsearch.server@9.1.0-SNAPSHOT/org.elasticsearch.rest.RestController$1.onResponse(RestController.java:462)
        at org.elasticsearch.security@9.1.0-SNAPSHOT/org.elasticsearch.xpack.security.rest.SecurityRestFilter.intercept(SecurityRestFilter.java:69)
        at org.elasticsearch.server@9.1.0-SNAPSHOT/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:462)
        at org.elasticsearch.server@9.1.0-SNAPSHOT/org.elasticsearch.rest.RestController.tryAllHandlers(RestController.java:626)
        at org.elasticsearch.server@9.1.0-SNAPSHOT/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:309)
        at org.elasticsearch.server@9.1.0-SNAPSHOT/org.elasticsearch.http.AbstractHttpServerTransport.dispatchRequest(AbstractHttpServerTransport.java:498)
        at org.elasticsearch.server@9.1.0-SNAPSHOT/org.elasticsearch.http.AbstractHttpServerTransport.handleIncomingRequest(AbstractHttpServerTransport.java:581)
        at org.elasticsearch.server@9.1.0-SNAPSHOT/org.elasticsearch.http.AbstractHttpServerTransport.incomingRequest(AbstractHttpServerTransport.java:461)
        at org.elasticsearch.transport.netty4@9.1.0-SNAPSHOT/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.handlePipelinedRequest(Netty4HttpPipeliningHandler.java:172)
        at org.elasticsearch.transport.netty4@9.1.0-SNAPSHOT/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.channelRead(Netty4HttpPipeliningHandler.java:147)
        at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions