[
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: [email protected]
For additional commands, e-mail: [email protected]