[ 
https://issues.apache.org/jira/browse/SOLR-11770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16568939#comment-16568939
 ] 

Erick Erickson commented on SOLR-11770:
---------------------------------------

Here's a patch. The fix for TVRH isn't very interesting, but there are a couple 
of things I'd like to draw your attention to [~dsmiley] and [~caomanhdat2] in 
particular.

1> I had to make several methods in RetrieveFieldOptimizer public to use them 
outside the package RFO is defined in. I consider this a stopgap until we 
tackle SOLR-12625.

2> Along the way I randomized the stored/docValues fields for "schema.xml" for 
my TVRH test. The defaults are as they are now so it "shouldn't change 
anything". HOWEVER:

2a> I screwed it up on the first attempt and set both to "true" by default the 
first time, and then QueryElevationComponentTest started failing. The fix 
(which seems safe, but isn't really complete) is in BaseEditorialTransformer. 
Anyone interested please take a look. All tests pass.

2b> It's scary that turning on docValues=true stored=true causes this kind of 
unintended consequence, how many others are lurking around? I propose we 
randomize the two environment variables you'll see in schema.xml in this patch 
in the framework and flush out any more. This presupposes that the three valid 
combinations should all be supported (stored=false,docValues=false doesn't make 
sense).

I'll commit this in over the weekend probably, the interesting work will be in 
SOLR-12625....

> NPE in tvrh if no field is specified and document doesn't contain any fields 
> with term vectors
> ----------------------------------------------------------------------------------------------
>
>                 Key: SOLR-11770
>                 URL: https://issues.apache.org/jira/browse/SOLR-11770
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: SearchComponents - other
>    Affects Versions: 6.6.2
>            Reporter: Nikolay Martynov
>            Assignee: Erick Erickson
>            Priority: Major
>         Attachments: SOLR-11770.patch
>
>
> It looks like if {{tvrh}} request doesn't contain {{fl}} parameter and 
> document doesn't have any fields with term vectors then Solr returns NPE.
> Request: 
> {{tvrh?shards.qt=/tvrh&fq=field%3Avalue&wt=json&q=id%3A123&tv.tf=true}}.
> On our 'old' schema we had some fields with {{termVectors}} and even more 
> fields with position data. In our new schema we tried to remove unused data 
> so we dropped a lot of position data and some term vectors.
> Our documents are 'sparsely' populated - not all documents contain all fields.
> Above request was returning fine for our 'old' schema and returns 500 for our 
> 'new' schema - on exactly same Solr (6.6.2).
> Stack trace:
> {code}
> 2017-12-18 01:15:00.958 ERROR (qtp255041198-46697) [c:test s:shard3 
> r:core_node11 x:test_shard3_replica1] o.a.s.h.RequestHandlerBase 
> java.lang.NullPointerException
>        at 
> org.apache.solr.handler.component.TermVectorComponent.process(TermVectorComponent.java:324)
>        at 
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:296)
>        at 
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:173)
>        at org.apache.solr.core.SolrCore.execute(SolrCore.java:2482)
>        at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:723)
>        at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:529)
>        at 
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:361)
>        at 
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:305)
>        at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1691)
>        at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582)
>        at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
>        at 
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
>        at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
>        at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
>        at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
>        at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
>        at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
>        at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
>        at 
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)
>        at 
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:119)
>        at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
>        at 
> org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
>        at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
>        at org.eclipse.jetty.server.Server.handle(Server.java:534)
>        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
>        at 
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
>        at 
> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
>        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
>        at 
> org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
>        at 
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
>        at 
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
>        at 
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
>        at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
>        at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
>        at java.lang.Thread.run(Thread.java:748)
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to