Hi - yes it is worth a ticket as the javadoc says it is ok:
http://lucene.apache.org/solr/4_10_1/solr-core/org/apache/solr/schema/ExternalFileField.html
 
 
-----Original message-----
> From:Matthew Nigl <matthew.n...@gmail.com>
> Sent: Wednesday 8th October 2014 14:48
> To: solr-user@lucene.apache.org
> Subject: NullPointerException for ExternalFileField when key field has no 
> terms
> 
> Hi,
> 
> I use various ID fields as the keys for various ExternalFileField fields,
> and I have noticed that I will sometimes get the following error:
> 
> ERROR org.apache.solr.servlet.SolrDispatchFilter  รป
> null:java.lang.NullPointerException
>         at
> org.apache.solr.search.function.FileFloatSource.getFloats(FileFloatSource.java:273)
>         at
> org.apache.solr.search.function.FileFloatSource.access$000(FileFloatSource.java:51)
>         at
> org.apache.solr.search.function.FileFloatSource$2.createValue(FileFloatSource.java:147)
>         at
> org.apache.solr.search.function.FileFloatSource$Cache.get(FileFloatSource.java:190)
>         at
> org.apache.solr.search.function.FileFloatSource.getCachedFloats(FileFloatSource.java:141)
>         at
> org.apache.solr.search.function.FileFloatSource.getValues(FileFloatSource.java:84)
>         at
> org.apache.solr.response.transform.ValueSourceAugmenter.transform(ValueSourceAugmenter.java:95)
>         at
> org.apache.solr.response.TextResponseWriter.writeDocuments(TextResponseWriter.java:252)
>         at
> org.apache.solr.response.TextResponseWriter.writeVal(TextResponseWriter.java:170)
>         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:1419)
>         at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
>         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:1075)
>         at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
>         at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
>         at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
>         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:368)
>         at
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
>         at
> org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
>         at
> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942)
>         at
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1004)
>         at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640)
>         at
> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
>         at
> org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
>         at
> org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
>         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(Unknown Source)
> 
> 
> 
> The source code referenced in the error is below (FileFloatSource.java:273):
> 
> TermsEnum termsEnum = MultiFields.getTerms(reader, idName).iterator(null);
> 
> So if there are no terms in the index for the key field, then getTerms will
> return null, and of course trying to call iterator on null will cause the
> exception.
> 
> For my use-case, it makes sense that the key field may have no terms
> (initially) because there are various types of documents sharing the index,
> and they will not all exist at the onset. The default value for the EFF
> would suffice in those cases.
> 
> Is this worthy of a JIRA? I have gone through whatever documentation I can
> find for ExternalFileField and I can't seem to find anything about
> requiring key terms first. It seems that this error is not encountered
> often because users generally set the unique key field as the external file
> key field, so it always exists.
> 
> The workaround is to ensure at least one document contains a value for the
> key fields.
> 
> Regards,
> Matt
> 

Reply via email to