This is an automated email from the ASF dual-hosted git repository.

jdyer pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new 20d810785c1 SOLR-17945: fix flaky test 
CloudHttp2SolrClientTest#testHttpCspPerf (#3742)
20d810785c1 is described below

commit 20d810785c1ac68856fd15561fe0e3d614816117
Author: James Dyer <[email protected]>
AuthorDate: Fri Oct 10 10:07:57 2025 -0500

    SOLR-17945: fix flaky test CloudHttp2SolrClientTest#testHttpCspPerf (#3742)
---
 .../solr/client/solrj/impl/BaseHttpClusterStateProvider.java     | 4 +++-
 .../apache/solr/client/solrj/impl/CloudHttp2SolrClientTest.java  | 9 +++++++++
 .../apache/solr/client/solrj/impl/ClusterStateProviderTest.java  | 3 ++-
 3 files changed, 14 insertions(+), 2 deletions(-)

diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/BaseHttpClusterStateProvider.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/BaseHttpClusterStateProvider.java
index c6d94aaeacb..23ce0c99b37 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/BaseHttpClusterStateProvider.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/BaseHttpClusterStateProvider.java
@@ -56,6 +56,8 @@ import org.slf4j.LoggerFactory;
 public abstract class BaseHttpClusterStateProvider implements 
ClusterStateProvider {
   private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
+  protected static final String SYS_PROP_CACHE_TIMEOUT_SECONDS = 
"solr.solrj.cache.timeout.sec";
+
   private String urlScheme;
   private List<URL> configuredNodes;
   volatile Set<String> liveNodes; // initially null then never null
@@ -65,7 +67,7 @@ public abstract class BaseHttpClusterStateProvider implements 
ClusterStateProvid
   long aliasesTimestamp = 0;
 
   // the liveNodes and aliases cache will be invalidated after 5 secs
-  private int cacheTimeout = 
EnvUtils.getPropertyAsInteger("solr.solrj.cache.timeout.sec", 5);
+  private int cacheTimeout = 
EnvUtils.getPropertyAsInteger(SYS_PROP_CACHE_TIMEOUT_SECONDS, 5);
 
   volatile boolean liveNodeReloadingScheduled = false;
   private final ScheduledExecutorService liveNodeReloadingService =
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudHttp2SolrClientTest.java
 
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudHttp2SolrClientTest.java
index a6d9c13e129..fb721a06ea2 100644
--- 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudHttp2SolrClientTest.java
+++ 
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudHttp2SolrClientTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.client.solrj.impl;
 
+import static 
org.apache.solr.client.solrj.impl.BaseHttpClusterStateProvider.SYS_PROP_CACHE_TIMEOUT_SECONDS;
 import static org.apache.solr.client.solrj.impl.CloudSolrClient.RouteResponse;
 
 import java.io.IOException;
@@ -256,6 +257,14 @@ public class CloudHttp2SolrClientTest extends 
SolrCloudTestCase {
   @Test
   @LogLevel("org.apache.solr.servlet.HttpSolrCall=DEBUG")
   public void testHttpCspPerf() throws Exception {
+    // This ensures CH2SC is caching cluster status by counting the number of 
logged calls to the
+    // admin endpoint. Too many calls to CLUSTERSTATUS might mean insufficient 
caching and
+    // performance regressions!
+
+    // BaseHttpClusterStateProvider has a background job that pre-fetches data 
from CLUSTERSTATUS
+    // on timed intervals.  This can pollute this test, so we set the interval 
very high to
+    // prevent it from running.
+    System.setProperty(SYS_PROP_CACHE_TIMEOUT_SECONDS, "" + Integer.MAX_VALUE);
 
     String collectionName = "HTTPCSPTEST";
     CollectionAdminRequest.createCollection(collectionName, "conf", 2, 1)
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ClusterStateProviderTest.java
 
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ClusterStateProviderTest.java
index 18f990b41c7..7af3580e687 100644
--- 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ClusterStateProviderTest.java
+++ 
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ClusterStateProviderTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.solr.client.solrj.impl;
 
+import static 
org.apache.solr.client.solrj.impl.BaseHttpClusterStateProvider.SYS_PROP_CACHE_TIMEOUT_SECONDS;
 import static org.apache.solr.common.util.URLUtil.getNodeNameForBaseUrl;
 import static org.hamcrest.Matchers.containsInAnyOrder;
 import static org.hamcrest.Matchers.equalTo;
@@ -84,7 +85,7 @@ public class ClusterStateProviderTest extends 
SolrCloudTestCase {
                 .resolve("conf"))
         .configure();
     cluster.waitForAllNodes(30);
-    System.setProperty("solr.solrj.cache.timeout.sec", "1");
+    System.setProperty(SYS_PROP_CACHE_TIMEOUT_SECONDS, "1");
   }
 
   @After

Reply via email to