[
https://issues.apache.org/jira/browse/SOLR-18177?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Matthew Biscocho updated SOLR-18177:
------------------------------------
Priority: Minor (was: Major)
> AllowListUrlChecker expensive URI creation on every host in the cluster on
> every distributed query
> --------------------------------------------------------------------------------------------------
>
> Key: SOLR-18177
> URL: https://issues.apache.org/jira/browse/SOLR-18177
> Project: Solr
> Issue Type: Bug
> Affects Versions: 9.10, 10.0
> Reporter: Matthew Biscocho
> Priority: Minor
> Attachments: Screenshot 2026-03-26 at 9.33.37 AM.png
>
>
> While looking into SOLR-18114 AllowListUrlChecker.checkAllowList() was found
> to be hot path for every distributed query on clouds with high number of
> nodes and shards. I found 2 performance problems after digging through a JFR
> dump containing many nodes with many shards:
> Each live host URL is parsed on every query using URI.create(). This is
> amplified in CloudReplicaSource which [calls findReplicas() in a loop for
> every
> shard|https://github.com/apache/solr/blob/6d896e096f593c86d59b779ba0a9a866791440e0/solr/core/src/java/org/apache/solr/handler/component/CloudReplicaSource.java#L96]
> in the collection, so the cost scales linearly with shard count. We could
> probably save some CPU time here by maybe caching these URIs as I don't
> expect live nodes hosts to move that often.
> !Screenshot 2026-03-26 at 9.33.37 AM.png!
> Second is that the host and port string is then [checked against
> liveHostUrls|https://github.com/apache/solr/blob/6d896e096f593c86d59b779ba0a9a866791440e0/solr/core/src/java/org/apache/solr/security/AllowListUrlChecker.java#L145]
> using a stream() O( n ) but the funny part is that liveHostUrls is a set
> completely defeating the purpose of doing a O(1) lookup.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]