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
