From 6ed3eadc9a4073a093c77f501345f79fa3284a7f Mon Sep 17 00:00:00 2001 From: Houston Putman Date: Wed, 3 Sep 2025 17:58:43 -0700 Subject: [PATCH] SOLR-17893: Use caching to remove Remote Proxy bottleneck --- solr/CHANGES.txt | 2 ++ solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java | 4 ++-- .../src/java/org/apache/solr/common/cloud/ZkStateReader.java | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index dee3965495b..5aafe67e713 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -228,6 +228,8 @@ Improvements --------------------- * SOLR-17860: DocBasedVersionConstraintsProcessorFactory now supports PULL replicas. (Houston Putman) +* SOLR-17893: Speed up Remote Proxy for high QPS, utilizing ClusterState caching. (Houston Putman) + Optimizations --------------------- (No changes) diff --git a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java index b9f3842b820..c0b78fc1a9f 100644 --- a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java +++ b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java @@ -327,7 +327,7 @@ protected DocCollection resolveDocCollection(String collectionName) { } ZkStateReader zkStateReader = cores.getZkController().getZkStateReader(); Supplier logic = - () -> zkStateReader.getClusterState().getCollectionOrNull(collectionName); + () -> zkStateReader.getClusterState().getCollectionOrNull(collectionName, true); DocCollection docCollection = logic.get(); if (docCollection != null) { @@ -930,7 +930,7 @@ private SolrCore checkProps(ZkNodeProps zkProps) { protected String getRemoteCoreUrl(String collectionName) throws SolrException { ClusterState clusterState = cores.getZkController().getClusterState(); - final DocCollection docCollection = clusterState.getCollectionOrNull(collectionName); + final DocCollection docCollection = clusterState.getCollectionOrNull(collectionName, true); if (docCollection == null) { return null; } diff --git a/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/ZkStateReader.java b/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/ZkStateReader.java index 7d0f80379b2..6a61ad69fe4 100644 --- a/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/ZkStateReader.java +++ b/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/ZkStateReader.java @@ -762,6 +762,7 @@ public synchronized DocCollection get(boolean allowCached) { Stat freshStats = null; try { freshStats = zkClient.exists(DocCollection.getCollectionPath(collName), null, true); + lastUpdateTime = System.nanoTime(); } catch (Exception e) { } if (freshStats != null