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

dsmiley 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 18ed6eb8808 SOLR-18242: DistribFileStore: refactor, don't use 
SolrClientCache (#4428)
18ed6eb8808 is described below

commit 18ed6eb88080198ebbb6973f89e35355ed81f590
Author: Jalaz Kumar <[email protected]>
AuthorDate: Sat May 16 00:15:27 2026 +0530

    SOLR-18242: DistribFileStore: refactor, don't use SolrClientCache (#4428)
    
    SolrClientCache is only needed to pool CloudSolrClient (different clusters)
    
    (cherry picked from commit 336205f44759c24ca9ab18743579cb7f6ec6cbd5)
    (cherry picked from commit 680011d0171273824358fdb0b53b5187f5ebeb62)
---
 .../apache/solr/filestore/DistribFileStore.java    | 38 +++++++++-------------
 1 file changed, 16 insertions(+), 22 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/filestore/DistribFileStore.java 
b/solr/core/src/java/org/apache/solr/filestore/DistribFileStore.java
index 061cd209b14..1d5a503097f 100644
--- a/solr/core/src/java/org/apache/solr/filestore/DistribFileStore.java
+++ b/solr/core/src/java/org/apache/solr/filestore/DistribFileStore.java
@@ -36,7 +36,6 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.StandardOpenOption;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -50,6 +49,7 @@ import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.lucene.util.IOUtils;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
+import org.apache.solr.client.solrj.request.FileStoreApi;
 import org.apache.solr.client.solrj.request.GenericSolrRequest;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.SolrZkClient;
@@ -189,14 +189,15 @@ public class DistribFileStore implements FileStore {
       var solrClient = coreContainer.getDefaultHttpSolrClient();
 
       try {
-        GenericSolrRequest request = new GenericSolrRequest(GET, "/node/files" 
+ getMetaPath());
-        request.setResponseParser(new InputStreamResponseParser(null));
-        var response = solrClient.requestWithBaseUrl(baseUrl, 
request::process).getResponse();
-        is = (InputStream) response.get("stream");
-        metadata =
-            Utils.newBytesConsumer((int) MAX_PKG_SIZE).accept((InputStream) 
response.get("stream"));
-        m = (Map<?, ?>) Utils.fromJSON(metadata.array(), 
metadata.arrayOffset(), metadata.limit());
-      } catch (SolrServerException | IOException e) {
+        final var metadataRequest = new FileStoreApi.GetFile(getMetaPath());
+        final var response = metadataRequest.processWithBaseUrl(solrClient, 
baseUrl, null);
+        try (final var responseStream = 
response.getResponseStreamIfSuccessful()) {
+          metadata = Utils.newBytesConsumer((int) 
MAX_PKG_SIZE).accept(responseStream);
+          m =
+              (Map<?, ?>)
+                  Utils.fromJSON(metadata.array(), metadata.arrayOffset(), 
metadata.limit());
+        }
+      } catch (Exception e) {
         throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Error 
fetching metadata", e);
       } finally {
         org.apache.solr.common.util.IOUtils.closeQuietly(is);
@@ -235,18 +236,12 @@ public class DistribFileStore implements FileStore {
         try {
           String baseUrl =
               
coreContainer.getZkController().getZkStateReader().getBaseUrlV2ForNodeName(liveNode);
-          final var solrParams = new ModifiableSolrParams();
-          solrParams.add("meta", "true");
-          solrParams.add("omitHeader", "true");
-
-          final var request = new GenericSolrRequest(GET, "/node/files" + 
path, solrParams);
-          boolean nodeHasBlob = false;
-          var solrClient = coreContainer.getDefaultHttpSolrClient();
-          var resp = solrClient.requestWithBaseUrl(baseUrl, 
request::process).getResponse();
-
-          if (Utils.getObjectByPath(resp, false, Arrays.asList("files", path)) 
!= null) {
-            nodeHasBlob = true;
-          }
+          final var metadataRequest = new FileStoreApi.GetMetadata(path);
+          final var client = coreContainer.getDefaultHttpSolrClient();
+          final var metadataResponse = 
metadataRequest.processWithBaseUrl(client, baseUrl, null);
+          final var parsed = metadataResponse.getParsed();
+          boolean nodeHasBlob =
+              parsed != null && parsed.files != null && 
parsed.files.containsKey(path);
           if (nodeHasBlob) {
             boolean success = fetchFileFromNodeAndPersist(liveNode);
             if (success) return true;
@@ -388,7 +383,6 @@ public class DistribFileStore implements FileStore {
           var solrClient = coreContainer.getDefaultHttpSolrClient();
           var solrParams = new ModifiableSolrParams();
           solrParams.set("getFrom", getFrom);
-
           var request = new GenericSolrRequest(GET, "/node/files" + info.path, 
solrParams);
           // fire and forget
           solrClient.requestWithBaseUrl(baseUrl, request::process);

Reply via email to