Let's say I'm using group.field=ip in a query.  If the index contains
documents where the ip field is the empty string, grouping fails with
NullPointerException in the response writer.  From our perspective, this
is a bad document that we have to fix, but I don't think it should have
failed the query (HTTP response code 500).  The empty string might be a
perfectly valid value for some use cases.

This is in Solr 4.7.2 and 4.9.1.  Is this a bug, or expected behavior?

FYI, I cannot check if the same problem exists in 5.x, because of
something else I stumbled across while working on a monitoring script
which uses these queries:

https://issues.apache.org/jira/browse/SOLR-8088

Here's the full exception from Solr 4.9.1:

java.lang.NullPointerException
    at
org.apache.solr.response.JSONWriter.writeSolrDocument(JSONResponseWriter.java:330)
    at
org.apache.solr.response.TextResponseWriter.writeSolrDocumentList(TextResponseWriter.java:220)
    at
org.apache.solr.response.TextResponseWriter.writeVal(TextResponseWriter.java:182)
    at
org.apache.solr.response.JSONWriter.writeNamedListAsMapWithDups(JSONResponseWriter.java:184)
    at
org.apache.solr.response.JSONWriter.writeNamedList(JSONResponseWriter.java:300)
    at
org.apache.solr.response.TextResponseWriter.writeVal(TextResponseWriter.java:186)
    at
org.apache.solr.response.JSONWriter.writeArray(JSONResponseWriter.java:542)
    at
org.apache.solr.response.TextResponseWriter.writeVal(TextResponseWriter.java:188)
    at
org.apache.solr.response.JSONWriter.writeNamedListAsMapWithDups(JSONResponseWriter.java:184)
    at
org.apache.solr.response.JSONWriter.writeNamedList(JSONResponseWriter.java:300)
    at
org.apache.solr.response.TextResponseWriter.writeVal(TextResponseWriter.java:186)
    at
org.apache.solr.response.JSONWriter.writeNamedListAsMapWithDups(JSONResponseWriter.java:184)
    at
org.apache.solr.response.JSONWriter.writeNamedList(JSONResponseWriter.java:300)
    at
org.apache.solr.response.TextResponseWriter.writeVal(TextResponseWriter.java:186)
    at
org.apache.solr.response.JSONWriter.writeNamedListAsMapWithDups(JSONResponseWriter.java:184)
    at
org.apache.solr.response.JSONWriter.writeNamedList(JSONResponseWriter.java:300)
    at
org.apache.solr.response.JSONWriter.writeResponse(JSONResponseWriter.java:96)
    at
org.apache.solr.response.JSONResponseWriter.write(JSONResponseWriter.java:61)
    at
org.apache.solr.servlet.SolrDispatchFilter.writeResponse(SolrDispatchFilter.java:765)
    at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:426)
    at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:207)
    at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1476)
    at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
    at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
    at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
    at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
    at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
    at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
    at
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
    at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:370)
    at
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
    at
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971)
    at
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1033)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
    at
org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at
org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
    at
org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
    at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
    at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
    at java.lang.Thread.run(Thread.java:745)

Thanks,
Shawn

Reply via email to