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

jdyer pushed a commit to branch feature/SOLR-17945
in repository https://gitbox.apache.org/repos/asf/solr.git

commit 9ba9c46cfa8421d5828c363ba8cfff1f59a1c38a
Author: jdyer1 <[email protected]>
AuthorDate: Tue Oct 7 11:14:54 2025 -0500

    SOLR-17945
    - create staic constant for sys prop (will cause test compile errors if 
removed in future)
    - cleanup sys prop in @AfterClass in ClusterStateProviderTest
    - set sys prop to very high number in testHttpCspPerf to prevent spurious 
CLUSTERSTATUS requests
---
 .../solrj/impl/BaseHttpClusterStateProvider.java   |  4 +-
 .../solrj/impl/CloudHttp2SolrClientTest.java       | 71 ++++++++++++----------
 .../solrj/impl/ClusterStateProviderTest.java       |  9 ++-
 3 files changed, 49 insertions(+), 35 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..1bbcb115662 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,47 +257,51 @@ public class CloudHttp2SolrClientTest extends 
SolrCloudTestCase {
   @Test
   @LogLevel("org.apache.solr.servlet.HttpSolrCall=DEBUG")
   public void testHttpCspPerf() throws Exception {
+    try {
+      System.setProperty(SYS_PROP_CACHE_TIMEOUT_SECONDS, "" + 
Integer.MAX_VALUE);
+      String collectionName = "HTTPCSPTEST";
+      CollectionAdminRequest.createCollection(collectionName, "conf", 2, 1)
+          .process(cluster.getSolrClient());
+      cluster.waitForActiveCollection(collectionName, 2, 2);
 
-    String collectionName = "HTTPCSPTEST";
-    CollectionAdminRequest.createCollection(collectionName, "conf", 2, 1)
-        .process(cluster.getSolrClient());
-    cluster.waitForActiveCollection(collectionName, 2, 2);
+      try (LogListener adminLogs = 
LogListener.info(HttpSolrCall.class).substring("[admin]");
+          CloudSolrClient solrClient = createHttpCSPBasedCloudSolrClient();) {
+        solrClient.getClusterStateProvider().getLiveNodes(); // talks to Solr
 
-    try (LogListener adminLogs = 
LogListener.info(HttpSolrCall.class).substring("[admin]");
-        CloudSolrClient solrClient = createHttpCSPBasedCloudSolrClient(); ) {
-      solrClient.getClusterStateProvider().getLiveNodes(); // talks to Solr
+        assertEquals(1, adminLogs.getCount());
+        assertTrue(
+            adminLogs
+                .pollMessage()
+                .contains(
+                    "path=/admin/collections 
params={prs=true&liveNodes=true&action"
+                        + "=CLUSTERSTATUS&includeAll=false"));
 
-      assertEquals(1, adminLogs.getCount());
-      assertTrue(
-          adminLogs
-              .pollMessage()
-              .contains(
-                  "path=/admin/collections 
params={prs=true&liveNodes=true&action"
-                      + "=CLUSTERSTATUS&includeAll=false"));
-
-      SolrInputDocument doc = new SolrInputDocument("id", "1", "title_s", "my 
doc");
-      solrClient.add(collectionName, doc);
-
-      // getCount seems to return a cumulative count, but add() results in 
only 1 additional admin
-      // request to fetch CLUSTERSTATUS for the collection
-      assertEquals(2, adminLogs.getCount());
-      assertTrue(
-          adminLogs
-              .pollMessage()
-              .contains(
-                  "path=/admin/collections "
-                      + 
"params={prs=true&action=CLUSTERSTATUS&includeAll=false"));
+        SolrInputDocument doc = new SolrInputDocument("id", "1", "title_s", 
"my doc");
+        solrClient.add(collectionName, doc);
 
-      solrClient.commit(collectionName);
-      // No additional admin requests sent
-      assertEquals(2, adminLogs.getCount());
+        // getCount seems to return a cumulative count, but add() results in 
only 1 additional admin
+        // request to fetch CLUSTERSTATUS for the collection
+        assertEquals(2, adminLogs.getCount());
+        assertTrue(
+            adminLogs
+                .pollMessage()
+                .contains(
+                    "path=/admin/collections "
+                        + 
"params={prs=true&action=CLUSTERSTATUS&includeAll=false"));
 
-      for (int i = 0; i < 3; i++) {
-        assertEquals(
-            1, solrClient.query(collectionName, params("q", 
"*:*")).getResults().getNumFound());
+        solrClient.commit(collectionName);
         // No additional admin requests sent
         assertEquals(2, adminLogs.getCount());
+
+        for (int i = 0; i < 3; i++) {
+          assertEquals(
+              1, solrClient.query(collectionName, params("q", 
"*:*")).getResults().getNumFound());
+          // No additional admin requests sent
+          assertEquals(2, adminLogs.getCount());
+        }
       }
+    } finally {
+      System.clearProperty(SYS_PROP_CACHE_TIMEOUT_SECONDS);
     }
   }
 
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..eb147b21bf4 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;
@@ -44,6 +45,7 @@ import org.eclipse.jetty.http.HttpField;
 import org.eclipse.jetty.http.HttpHeader;
 import org.hamcrest.Matchers;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -84,7 +86,12 @@ 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");
+  }
+
+  @AfterClass
+  public static void clearSystemPrperty() {
+    System.clearProperty(SYS_PROP_CACHE_TIMEOUT_SECONDS);
   }
 
   @After

Reply via email to