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

Houston Putman commented on SOLR-17151:
---------------------------------------

I think a small here opened up a pretty big error in the LBSolrClient, that 
propagates to the HttpShardHandler.

In this ticket, when checking the previous exception, 
{{previousEx.getMessage().contains("Limits exceeded!")}} is used to check 
something. If the previousEx doesn't have a message, this throws a 
NullPointerException.

In {{LBHttp2SolrClient}}, when choosing the next server to try, only 
{{SolrServerException}} is caught and used to complete the future. Since 
{{NullPointerException}} is not a {{SolrServerException}}, the exception 
finished the listener callback, but doesn't complete the {{apiFuture}}. This 
means that {{HttpShardHandler}} will wait infinitely for a completion that it 
will never receive.

I will file another JIRA, and we should probably do a release to fix this bug.

> Review current usage of QueryLimits to ensure complete coverage
> ---------------------------------------------------------------
>
>                 Key: SOLR-17151
>                 URL: https://issues.apache.org/jira/browse/SOLR-17151
>             Project: Solr
>          Issue Type: Sub-task
>          Components: Query Limits
>            Reporter: Andrzej Bialecki
>            Assignee: Gus Heck
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: main (10.0), 9.8
>
>          Time Spent: 3.5h
>  Remaining Estimate: 0h
>
> Resource usage by a query is not limited to the actual search within 
> {{QueryComponent}}. Other components invoked by {{SearchHandler}} may 
> significantly contribute to this usage, either before or after the 
> {{QueryComponent}}.
> Those components that already use {{QueryTimeout}} either directly or 
> indirectly will properly observe the limits and terminate if needed. However, 
> other components may be expensive or misbehaving but fail to observe the 
> limits imposed on the end-to-end query processing.
> One such obvious place where we could add this check is where the 
> {{SearchHandler}} loops over {{SearchComponent}-s - it should call explicitly 
> {{QueryLimits.shouldExit()}} to ensure that even if previously executed 
> component ignored the limits they will be still enforced at the 
> {{SearchHandler}} level. There may be other places like this, too.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to