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

Bram Van Dam edited comment on SOLR-14758 at 8/20/20, 3:09 PM:
---------------------------------------------------------------

[~mdrob], I added an updated version of the patch which contains a quick 
regression test. It's a pretty big codebase and somewhat out of my comfort 
zone, so I'm not sure if the test is in the right place. Added it to a test 
which was already testing distributed sorting, so that seemed like a good fit. 


was (Author: bvd):
[~mdrob] Added an updated version of the patch which contains a quick 
regression test. It's a pretty big codebase and somewhat out of my comfort 
zone, so I'm not sure if the test is in the right place. Added it to a test 
which was already testing distributed sorting, so that seemed like a good fit. 

> NPE in QueryComponent.mergeIds when using timeAllowed and sorting
> -----------------------------------------------------------------
>
>                 Key: SOLR-14758
>                 URL: https://issues.apache.org/jira/browse/SOLR-14758
>             Project: Solr
>          Issue Type: Bug
>          Components: SolrCloud
>    Affects Versions: master (9.0), 7.7.3
>            Reporter: Bram Van Dam
>            Priority: Major
>         Attachments: SOLR-14758.patch, SOLR-14758.patch
>
>
> Only tested on 7.7.3 and master, but the offending code hasn't been changed 
> for a while, so this presumably affects other versions as well. 
> Steps to reproduce:
> # SolrCloud
> # Create a query which is complex enough to take a while
> # Add a sort clause to the query (e.g. &sort=creationTimestamp asc)
> # Add a short value timeAllowed (10ms in my test)
> Result: NPE in QueryComponent.mergeIds:935
> It may take a couple of attempts to hit the error.
> Offending code:
> {code:java}
>         NamedList sortFieldValues = 
> (NamedList)(srsp.getSolrResponse().getResponse().get("sort_values"));
>         if (sortFieldValues.size()==0 && // we bypass merging this response 
> only if it's partial itself
>                             thisResponseIsPartial) { // but not the previous 
> one!!
>           continue; //fsv timeout yields empty sort_vlaues
>         }
> {code}
> sortFieldValues can apparently be null in some cases, depending on when the 
> query hits the timeAllowed. Adding an extra null check fixes the issue.
> {code:java}
>         NamedList sortFieldValues = 
> (NamedList)(srsp.getSolrResponse().getResponse().get("sort_values"));
>         if ((null == sortFieldValues || sortFieldValues.size()==0) && // we 
> bypass merging this response only if it's partial itself
>                             thisResponseIsPartial) { // but not the previous 
> one!!
>           continue; //fsv timeout yields empty sort_vlaues
>         }
> {code}
> I'll attach a patch.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to