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

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


The following commit(s) were added to refs/heads/branch_9x by this push:
     new b7ab25f08af SOLR-17582: Fix ClusterState serializing for older SolrJ 
versions (#3410)
b7ab25f08af is described below

commit b7ab25f08af3a0805210a4b666535deadbbae18a
Author: Houston Putman <[email protected]>
AuthorDate: Fri Jun 27 17:29:30 2025 -0500

    SOLR-17582: Fix ClusterState serializing for older SolrJ versions (#3410)
    
    (cherry picked from commit 50655d0e1b275a4c10d2b9b3a8a6c1d850178643)
---
 .../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 9c847663907..fe89248fdd4 100644
--- a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
+++ b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
@@ -1226,7 +1226,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 9198956261e..10ee17201d7 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
@@ -235,6 +235,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().collect(Collectors.toList()),
+          containsInAnyOrder(clusterStateHttp.collectionStream().toArray()));
+
+      assertThat(
+          clusterStateZk.getCollection("col2"), 
equalTo(clusterStateHttp.getCollection("col2")));
+    }
   }
 
   @Test

Reply via email to