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

Chris M. Hostetter commented on SOLR-13851:
-------------------------------------------

Background: I recently noticed jenkins test failures from 
TestCloudNestedDocsSort that stemmed from this assertion error...

{noformat}
   [junit4]   2> <pre>    Server Error</pre></p><h3>Caused 
by:</h3><pre>java.lang.AssertionError
   [junit4]   2>        at 
org.apache.solr.search.SolrIndexSearcher.lookupId(SolrIndexSearcher.java:710)
   [junit4]   2>        at 
org.apache.solr.search.SolrIndexSearcher.getFirstMatch(SolrIndexSearcher.java:676)
   [junit4]   2>        at 
org.apache.solr.handler.component.QueryComponent.doProcessSearchByIds(QueryComponent.java:1266)
   [junit4]   2>        at 
org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:351)
   [junit4]   2>        at 
org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:305)
   [junit4]   2>        at 
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:198)
   [junit4]   2>        at 
org.apache.solr.core.SolrCore.execute(SolrCore.java:2559)
{noformat}

At the core of the problem is that TestCloudNestedDocsSort does some things it 
shouldn't in terms of fhild doc uniqueKeys (which i'll track in a linked jira) 
... but while using git bisect to identify when/where the failure was 
introduced, it identified GIT:1e63b32731bedf108aaeeb5d0a04d671f5663102 
(SOLR-12366) as the first bad commit, and that's when i realized that prior to 
SOLR-12366 this (bad test) worked fine because {{getFirstMatch}} just did what 
it says: returned the first match (w/o complaining if there were multiples)


> SolrIndexSearcher.getFirstMatch trips assertion if multiple matches
> -------------------------------------------------------------------
>
>                 Key: SOLR-13851
>                 URL: https://issues.apache.org/jira/browse/SOLR-13851
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>            Reporter: Chris M. Hostetter
>            Priority: Major
>
> the documentation for {{SolrIndexSearcher.getFirstMatch}} says...
> {quote}
> Returns the first document number containing the term <code>t</code> Returns 
> -1 if no document was found. This method is primarily intended for clients 
> that want to fetch documents using a unique identifier."
> @return the first document number containing the term
> {quote}
> But SOLR-12366 refactored {{SolrIndexSearcher.getFirstMatch}} to eliminate 
> it's previous implementation and replace it with a call to (a refactored 
> version of) {{SolrIndexSearcher.lookupId}} -- but the code in {{lookupId}} 
> was always designed *explicitly* for dealing with a uniqueKey field, and has 
> an assertion that once it finds a match _there will be no other matches in 
> the index_
> This means that even though {{getFirstMatch}} is _intended_ for fields that 
> are unique between documents, i it's used on a field that is not unique, it 
> can trip an assertion.
> At a minimum we need to either "fix" {{getFirstMatch}} to behave as 
> documented, or fix it's documetation.
> Given that the current behavior has now been in place since Solr 7.4, and 
> given that all existing uses in "core" solr code are for looking up docs by 
> uniqueKey, it's probably best to simply fix the documentation, but we should 
> also consider replacing hte assertion with an IllegalStateException, or 
> SolrException -- anything not dependent on having assertions enabled -- to 
> prevent silent bugs.



--
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