This is an automated email from the ASF dual-hosted git repository.
houston 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 50655d0e1b2 SOLR-17582: Fix ClusterState serializing for older SolrJ
versions (#3410)
50655d0e1b2 is described below
commit 50655d0e1b275a4c10d2b9b3a8a6c1d850178643
Author: Houston Putman <[email protected]>
AuthorDate: Fri Jun 27 17:29:30 2025 -0500
SOLR-17582: Fix ClusterState serializing for older SolrJ versions (#3410)
---
.../java/org/apache/solr/servlet/HttpSolrCall.java | 8 ++++++-
.../solrj/impl/ClusterStateProviderTest.java | 28 ++++++++++++++++++++++
2 files changed, 35 insertions(+), 1 deletion(-)
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 fee0c3d0c21..4b77790898c 100644
--- a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
+++ b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
@@ -1193,7 +1193,13 @@ public class HttpSolrCall {
return null;
}
try {
- return SolrVersion.valueOf(header.substring(header.lastIndexOf(' ') +
1));
+ String userAgent = header.substring(header.lastIndexOf(' ') + 1);
+ if ("1.0".equals(userAgent)) {
+ userAgent = "1.0.0";
+ } else if ("2.0".equals(userAgent)) {
+ userAgent = "2.0.0";
+ }
+ return SolrVersion.valueOf(userAgent);
} catch (Exception e) {
// unexpected but let's not freak out
assert false : e.toString();
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 5c6ce5fbdb9..a702fe6ca4f 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
@@ -233,6 +233,34 @@ public class ClusterStateProviderTest extends
SolrCloudTestCase {
assertThat(
clusterStateZk.getCollection("col2"),
equalTo(clusterStateHttp.getCollection("col2")));
}
+
+ try (var cspZk = zkClientClusterStateProvider();
+ var cspHttp = http2ClusterStateProvider()) {
+ // Even older SolrJ versionsg for non streamed response
+ cspHttp
+ .getHttpClient()
+ .getHttpClient()
+ .setUserAgentField(
+ new HttpField(
+ HttpHeader.USER_AGENT,
+ "Solr[" + MethodHandles.lookup().lookupClass().getName() +
"] " + "2.0"));
+
+ assertThat(cspHttp.getCollection("col1"),
equalTo(cspZk.getCollection("col1")));
+
+ final var clusterStateZk = cspZk.getClusterState();
+ final var clusterStateHttp = cspHttp.getClusterState();
+ assertThat(
+ clusterStateHttp.getLiveNodes(),
+ containsInAnyOrder(clusterStateHttp.getLiveNodes().toArray()));
+ assertEquals(2, clusterStateZk.size());
+ assertEquals(clusterStateZk.size(), clusterStateHttp.size());
+ assertThat(
+ clusterStateHttp.collectionStream().toList(),
+ containsInAnyOrder(clusterStateHttp.collectionStream().toArray()));
+
+ assertThat(
+ clusterStateZk.getCollection("col2"),
equalTo(clusterStateHttp.getCollection("col2")));
+ }
}
@Test