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