This is an automated email from the ASF dual-hosted git repository.
dsmiley 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 20b82a95182 SOLR-17285: Move RemoteExecutionException (#3631)
20b82a95182 is described below
commit 20b82a95182b6fc4f823471655d531f88eb42910
Author: David Smiley <[email protected]>
AuthorDate: Sat Oct 11 18:20:54 2025 -0400
SOLR-17285: Move RemoteExecutionException (#3631)
So that we deprecate/remove BaseHttpSolrClient
---
.../api/NodeConfigClusterPluginsSourceTest.java | 4 +-
.../solr/filestore/TestDistribFileStore.java | 2 +-
.../apache/solr/handler/TestContainerPlugin.java | 2 +-
.../src/test/org/apache/solr/pkg/TestPackages.java | 4 +-
.../solr/client/solrj/impl/BaseHttpSolrClient.java | 41 +--------------
.../solr/client/solrj/impl/HttpSolrClientBase.java | 2 +-
.../solr/client/solrj/impl/LBHttp2SolrClient.java | 2 +-
.../solr/client/solrj/impl/LBSolrClient.java | 2 +-
.../solrj/impl/RemoteExecutionException.java | 59 ++++++++++++++++++++++
9 files changed, 70 insertions(+), 48 deletions(-)
diff --git
a/solr/core/src/test/org/apache/solr/api/NodeConfigClusterPluginsSourceTest.java
b/solr/core/src/test/org/apache/solr/api/NodeConfigClusterPluginsSourceTest.java
index c4da59ba64d..ad640ebb495 100644
---
a/solr/core/src/test/org/apache/solr/api/NodeConfigClusterPluginsSourceTest.java
+++
b/solr/core/src/test/org/apache/solr/api/NodeConfigClusterPluginsSourceTest.java
@@ -20,7 +20,7 @@ package org.apache.solr.api;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
-import org.apache.solr.client.solrj.impl.BaseHttpSolrClient;
+import org.apache.solr.client.solrj.impl.RemoteExecutionException;
import org.apache.solr.client.solrj.request.V2Request;
import org.apache.solr.client.solrj.request.beans.PluginMeta;
import org.apache.solr.client.solrj.response.V2Response;
@@ -125,7 +125,7 @@ public class NodeConfigClusterPluginsSourceTest extends
SolrCloudTestCase {
try {
req.process(cluster.getSolrClient());
fail("Expected a 404 response code because the Edit Apis are not
registered");
- } catch (BaseHttpSolrClient.RemoteExecutionException e) {
+ } catch (RemoteExecutionException e) {
assertEquals(
"Expected a HTTP 404 response code because the /cluster/plugin API
should not be registered",
404,
diff --git
a/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java
b/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java
index 5957ea93e63..580abd12944 100644
--- a/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java
+++ b/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java
@@ -37,9 +37,9 @@ import org.apache.http.client.methods.HttpDelete;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServerException;
-import
org.apache.solr.client.solrj.impl.BaseHttpSolrClient.RemoteExecutionException;
import org.apache.solr.client.solrj.impl.HttpClientUtil;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
+import org.apache.solr.client.solrj.impl.RemoteExecutionException;
import org.apache.solr.client.solrj.request.FileStoreApi;
import org.apache.solr.client.solrj.request.V2Request;
import org.apache.solr.client.solrj.response.SimpleSolrResponse;
diff --git
a/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
b/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
index 6306c859449..7f913a513f8 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
@@ -40,7 +40,7 @@ import org.apache.solr.api.ConfigurablePlugin;
import org.apache.solr.api.ContainerPluginsRegistry;
import org.apache.solr.api.EndPoint;
import org.apache.solr.client.solrj.SolrClient;
-import
org.apache.solr.client.solrj.impl.BaseHttpSolrClient.RemoteExecutionException;
+import org.apache.solr.client.solrj.impl.RemoteExecutionException;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
import org.apache.solr.client.solrj.request.V2Request;
import org.apache.solr.client.solrj.request.beans.PackagePayload;
diff --git a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
index 973a3e6dc52..494ad8c530e 100644
--- a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
+++ b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
@@ -46,9 +46,9 @@ import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.BaseHttpSolrClient;
import org.apache.solr.client.solrj.impl.HttpClientUtil;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
+import org.apache.solr.client.solrj.impl.RemoteExecutionException;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
import org.apache.solr.client.solrj.request.GenericSolrRequest;
import org.apache.solr.client.solrj.request.RequestWriter;
@@ -877,7 +877,7 @@ public class TestPackages extends SolrCloudTestCase {
try {
req.process(client);
fail("should have failed with message : " + expectErrorMsg);
- } catch (BaseHttpSolrClient.RemoteExecutionException e) {
+ } catch (RemoteExecutionException e) {
String msg =
Objects.requireNonNullElse(e.getMetaData()._getStr(errPath), "");
assertTrue(
"should have failed with message: " + expectErrorMsg + "actual
message : " + msg,
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/BaseHttpSolrClient.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/BaseHttpSolrClient.java
index 5a9df769a99..e07b98ebfcf 100644
---
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/BaseHttpSolrClient.java
+++
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/BaseHttpSolrClient.java
@@ -17,44 +17,7 @@
package org.apache.solr.client.solrj.impl;
-import static org.apache.solr.common.util.Utils.getObjectByPath;
-
-import java.util.Collections;
import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.common.util.NamedList;
-
-public abstract class BaseHttpSolrClient extends SolrClient {
-
- /**
- * This should be thrown when a server has an error in executing the
request, and it sends a
- * proper payload back to the client
- */
- public static class RemoteExecutionException extends RemoteSolrException {
- private NamedList<?> meta;
-
- public RemoteExecutionException(String remoteHost, int code, String msg,
NamedList<?> meta) {
- super(remoteHost, code, msg + (meta != null ? ": " + meta : ""), null);
- this.meta = meta;
- }
-
- public static RemoteExecutionException create(String host, NamedList<?>
errResponse) {
- Object errObj = errResponse.get("error");
- if (errObj != null) {
- Number code = (Number) getObjectByPath(errObj, true,
Collections.singletonList("code"));
- String msg = (String) getObjectByPath(errObj, true,
Collections.singletonList("msg"));
- return new RemoteExecutionException(
- host,
- code == null ? ErrorCode.UNKNOWN.code : code.intValue(),
- msg == null ? "Unknown Error" : msg,
- errResponse);
-
- } else {
- throw new RuntimeException("No error");
- }
- }
- public NamedList<?> getMetaData() {
- return meta;
- }
- }
-}
+@Deprecated
+public abstract class BaseHttpSolrClient extends SolrClient {}
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClientBase.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClientBase.java
index 73dbb45ce71..92cc3b79caf 100644
---
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClientBase.java
+++
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClientBase.java
@@ -220,7 +220,7 @@ public abstract class HttpSolrClientBase extends SolrClient
{
if (error != null
&& (String.valueOf(getObjectByPath(error, true, errPath))
.endsWith("ExceptionWithErrObject"))) {
- throw
BaseHttpSolrClient.RemoteExecutionException.create(urlExceptionMessage, rsp);
+ throw RemoteExecutionException.create(urlExceptionMessage, rsp);
}
if (httpStatus != 200 && !isV2Api) {
NamedList<String> metadata = null;
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttp2SolrClient.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttp2SolrClient.java
index 28039a574f9..89ffbd707a0 100644
---
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttp2SolrClient.java
+++
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttp2SolrClient.java
@@ -254,7 +254,7 @@ public class LBHttp2SolrClient<C extends
HttpSolrClientBase> extends LBSolrClien
RetryListener listener) {
try {
throw (Exception) oe;
- } catch (BaseHttpSolrClient.RemoteExecutionException e) {
+ } catch (RemoteExecutionException e) {
listener.onFailure(e, false);
} catch (SolrException e) {
// we retry on 404 or 403 or 503 or 500
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBSolrClient.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBSolrClient.java
index 85fadde4ac7..a0d13b7c7c4 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBSolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBSolrClient.java
@@ -526,7 +526,7 @@ public abstract class LBSolrClient extends SolrClient {
if (isZombie) {
reviveZombieServer(baseUrl);
}
- } catch (BaseHttpSolrClient.RemoteExecutionException e) {
+ } catch (RemoteExecutionException e) {
throw e;
} catch (SolrException e) {
// we retry on 404 or 403 or 503 or 500
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/RemoteExecutionException.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/RemoteExecutionException.java
new file mode 100644
index 00000000000..18baf4f6756
--- /dev/null
+++
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/RemoteExecutionException.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.solr.client.solrj.impl;
+
+import static org.apache.solr.common.util.Utils.getObjectByPath;
+
+import java.util.Collections;
+import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.common.util.NamedList;
+
+/**
+ * This should be thrown when a server has an error in executing the request,
and it sends a proper
+ * payload back to the client
+ *
+ * <p>THIS IS INTERNAL AND MAY DISAPPEAR
+ */
+public class RemoteExecutionException extends SolrClient.RemoteSolrException {
+ private NamedList<?> meta;
+
+ public RemoteExecutionException(String remoteHost, int code, String msg,
NamedList<?> meta) {
+ super(remoteHost, code, msg + (meta != null ? ": " + meta : ""), null);
+ this.meta = meta;
+ }
+
+ public static RemoteExecutionException create(String host, NamedList<?>
errResponse) {
+ Object errObj = errResponse.get("error");
+ if (errObj != null) {
+ Number code = (Number) getObjectByPath(errObj, true,
Collections.singletonList("code"));
+ String msg = (String) getObjectByPath(errObj, true,
Collections.singletonList("msg"));
+ return new RemoteExecutionException(
+ host,
+ code == null ? ErrorCode.UNKNOWN.code : code.intValue(),
+ msg == null ? "Unknown Error" : msg,
+ errResponse);
+
+ } else {
+ throw new RuntimeException("No error");
+ }
+ }
+
+ public NamedList<?> getMetaData() {
+ return meta;
+ }
+}