You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@solr.apache.org by "Houston Putman (Jira)" <ji...@apache.org> on 2025/01/29 23:28:00 UTC

[jira] [Commented] (SOLR-17151) Review current usage of QueryLimits to ensure complete coverage

    [ 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-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org