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 e2b4a0ce66e QueryRequest should only be for SearchHandler (#3518)
e2b4a0ce66e is described below
commit e2b4a0ce66ec04e1156b1b34607df711d75b1b14
Author: David Smiley <[email protected]>
AuthorDate: Mon Sep 8 21:53:51 2025 -0400
QueryRequest should only be for SearchHandler (#3518)
(minor; no JIRA/CHANGES.txt)
---------
Co-authored-by: Christine Poerschke <[email protected]>
Co-authored-by: Jason Gerlowski <[email protected]>
---
.../api/collections/ReindexCollectionCmd.java | 8 +++-
.../java/org/apache/solr/handler/IndexFetcher.java | 27 +++++++------
.../org/apache/solr/handler/admin/ColStatus.java | 13 ++++--
.../org/apache/solr/update/PeerSyncWithLeader.java | 21 +++++-----
.../solr/cloud/LeaderVoteWaitTimeoutTest.java | 13 ++++--
.../apache/solr/cloud/TestCloudConsistency.java | 13 ++++--
.../solr/cloud/TestTlogReplayVsRecovery.java | 16 +++++---
.../apache/solr/handler/ReplicationTestHelper.java | 16 +++++---
.../solr/handler/TestReplicationHandler.java | 41 ++++++++++---------
.../handler/admin/ShowFileRequestHandlerTest.java | 46 +++++++++++-----------
.../org/apache/solr/search/TestTaskManagement.java | 7 +++-
.../solr/prometheus/exporter/MetricsQuery.java | 4 --
.../solr/client/solrj/request/QueryRequest.java | 3 ++
.../solrj/impl/CloudHttp2SolrClientTest.java | 8 ++--
.../client/solrj/impl/CloudSolrClientTest.java | 7 +++-
15 files changed, 147 insertions(+), 96 deletions(-)
diff --git
a/solr/core/src/java/org/apache/solr/cloud/api/collections/ReindexCollectionCmd.java
b/solr/core/src/java/org/apache/solr/cloud/api/collections/ReindexCollectionCmd.java
index a36f28ebf71..23a7f7a6553 100644
---
a/solr/core/src/java/org/apache/solr/cloud/api/collections/ReindexCollectionCmd.java
+++
b/solr/core/src/java/org/apache/solr/cloud/api/collections/ReindexCollectionCmd.java
@@ -33,9 +33,11 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrResponse;
import org.apache.solr.client.solrj.cloud.DistribStateManager;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
+import org.apache.solr.client.solrj.request.GenericSolrRequest;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.cloud.DistributedClusterStateUpdater;
@@ -854,12 +856,14 @@ public class ReindexCollectionCmd implements
CollApiCmds.CollectionApiCommand {
final var solrClient = ccc.getCoreContainer().getDefaultHttpSolrClient();
final var solrParams = new ModifiableSolrParams();
- solrParams.set(CommonParams.QT, "/stream");
solrParams.set("action", action);
solrParams.set(CommonParams.ID, daemonName);
solrParams.set(CommonParams.DISTRIB, false);
- final var req = new QueryRequest(solrParams);
+ final var req =
+ new GenericSolrRequest(
+ SolrRequest.METHOD.POST, "/stream",
SolrRequest.SolrRequestType.ADMIN, solrParams)
+ .setRequiresCollection(true);
final var solrResponse =
solrClient.requestWithBaseUrl(daemonReplica.getBaseUrl(),
daemonReplica.getCoreName(), req);
return solrResponse.getResponse();
diff --git a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
index a2cb129fedb..58e19057da1 100644
--- a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
+++ b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
@@ -89,11 +89,12 @@ import org.apache.lucene.store.IOContext;
import org.apache.lucene.store.IndexInput;
import org.apache.lucene.store.IndexOutput;
import org.apache.solr.client.api.model.FileMetaData;
+import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.Http2SolrClient;
import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
import org.apache.solr.client.solrj.impl.SolrHttpConstants;
-import org.apache.solr.client.solrj.request.QueryRequest;
+import org.apache.solr.client.solrj.request.GenericSolrRequest;
import org.apache.solr.cloud.CloudDescriptor;
import org.apache.solr.cloud.ZkController;
import org.apache.solr.common.SolrException;
@@ -102,6 +103,7 @@ import org.apache.solr.common.cloud.ClusterState;
import org.apache.solr.common.cloud.Replica;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.ModifiableSolrParams;
+import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.ExecutorUtil;
import org.apache.solr.common.util.FastInputStream;
import org.apache.solr.common.util.IOUtils;
@@ -340,13 +342,21 @@ public class IndexFetcher {
return toReturn;
}
+ private GenericSolrRequest createReplicationHandlerRequest(SolrParams
solrParams) {
+ return new GenericSolrRequest(
+ SolrRequest.METHOD.GET,
+ ReplicationHandler.PATH,
+ SolrRequest.SolrRequestType.ADMIN,
+ solrParams)
+ .setRequiresCollection(true);
+ }
+
/** Gets the latest commit version and generation from the leader */
public NamedList<Object> getLatestVersion() throws IOException {
ModifiableSolrParams params = new ModifiableSolrParams();
params.set(COMMAND, CMD_INDEX_VERSION);
params.set(CommonParams.WT, JAVABIN);
- params.set(CommonParams.QT, ReplicationHandler.PATH);
- QueryRequest req = new QueryRequest(params);
+ var req = createReplicationHandlerRequest(params);
try {
return solrClient.requestWithBaseUrl(leaderBaseUrl, leaderCoreName,
req).getResponse();
} catch (SolrServerException e) {
@@ -364,8 +374,7 @@ public class IndexFetcher {
params.set(COMMAND, CMD_GET_FILE_LIST);
params.set(GENERATION, String.valueOf(gen));
params.set(CommonParams.WT, JAVABIN);
- params.set(CommonParams.QT, ReplicationHandler.PATH);
- QueryRequest req = new QueryRequest(params);
+ var req = createReplicationHandlerRequest(params);
try {
NamedList<?> response =
solrClient.requestWithBaseUrl(leaderBaseUrl, leaderCoreName,
req).getResponse();
@@ -1876,7 +1885,6 @@ public class IndexFetcher {
// the method is command=filecontent
params.set(COMMAND, CMD_GET_FILE);
params.set(GENERATION, Long.toString(indexGen));
- params.set(CommonParams.QT, ReplicationHandler.PATH);
// add the version to download. This is used to reserve the download
params.set(solrParamOutput, fileName);
if (useInternalCompression) {
@@ -1896,9 +1904,8 @@ public class IndexFetcher {
NamedList<?> response;
InputStream is = null;
- // TODO use shardhandler
try {
- QueryRequest req = new QueryRequest(params);
+ var req = createReplicationHandlerRequest(params);
req.setResponseParser(new InputStreamResponseParser(FILE_STREAM));
if (useExternalCompression) req.addHeader("Accept-Encoding", "gzip");
response = solrClient.requestWithBaseUrl(leaderBaseUrl,
leaderCoreName, req).getResponse();
@@ -2042,10 +2049,8 @@ public class IndexFetcher {
ModifiableSolrParams params = new ModifiableSolrParams();
params.set(COMMAND, CMD_DETAILS);
params.set("follower", false);
- params.set(CommonParams.QT, ReplicationHandler.PATH);
- QueryRequest request = new QueryRequest(params);
- // TODO use shardhandler
+ var request = createReplicationHandlerRequest(params);
return solrClient.requestWithBaseUrl(leaderBaseUrl, leaderCoreName,
request).getResponse();
}
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/ColStatus.java
b/solr/core/src/java/org/apache/solr/handler/admin/ColStatus.java
index 39e115146b9..0ef42781ddf 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/ColStatus.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/ColStatus.java
@@ -26,9 +26,10 @@ import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import org.apache.solr.client.api.model.GetSegmentDataResponse;
+import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.Http2SolrClient;
-import org.apache.solr.client.solrj.request.QueryRequest;
+import org.apache.solr.client.solrj.request.GenericSolrRequest;
import org.apache.solr.common.cloud.ClusterState;
import org.apache.solr.common.cloud.DocCollection;
import org.apache.solr.common.cloud.Replica;
@@ -36,7 +37,6 @@ import org.apache.solr.common.cloud.RoutingRule;
import org.apache.solr.common.cloud.Slice;
import org.apache.solr.common.cloud.ZkNodeProps;
import org.apache.solr.common.cloud.ZkStateReader;
-import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
@@ -190,7 +190,6 @@ public class ColStatus {
if (getSegments) {
try {
ModifiableSolrParams params = new ModifiableSolrParams();
- params.add(CommonParams.QT, "/admin/segments");
params.add(FIELD_INFO_PROP, "true");
params.add(CORE_INFO_PROP, String.valueOf(withCoreInfo));
params.add(SIZE_INFO_PROP, String.valueOf(withSizeInfo));
@@ -200,7 +199,13 @@ public class ColStatus {
if (samplingPercent != null) {
params.add(RAW_SIZE_SAMPLING_PERCENT_PROP,
String.valueOf(samplingPercent));
}
- QueryRequest req = new QueryRequest(params);
+ var req =
+ new GenericSolrRequest(
+ SolrRequest.METHOD.GET,
+ "/admin/segments",
+ SolrRequest.SolrRequestType.ADMIN,
+ params)
+ .setRequiresCollection(true);
NamedList<Object> rsp = solrClient.requestWithBaseUrl(url, null,
req).getResponse();
final var segmentResponse =
SolrJacksonMapper.getObjectMapper().convertValue(rsp,
GetSegmentDataResponse.class);
diff --git a/solr/core/src/java/org/apache/solr/update/PeerSyncWithLeader.java
b/solr/core/src/java/org/apache/solr/update/PeerSyncWithLeader.java
index 50af7b050ea..8dff6d15432 100644
--- a/solr/core/src/java/org/apache/solr/update/PeerSyncWithLeader.java
+++ b/solr/core/src/java/org/apache/solr/update/PeerSyncWithLeader.java
@@ -31,8 +31,7 @@ import java.util.Set;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.Http2SolrClient;
-import org.apache.solr.client.solrj.request.QueryRequest;
-import org.apache.solr.client.solrj.response.QueryResponse;
+import org.apache.solr.client.solrj.request.GenericSolrRequest;
import org.apache.solr.cloud.ZkController;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.params.ModifiableSolrParams;
@@ -262,13 +261,12 @@ public class PeerSyncWithLeader implements
SolrMetricProducer {
}
ModifiableSolrParams params = new ModifiableSolrParams();
- params.set("qt", "/get");
params.set(DISTRIB, false);
params.set("getUpdates", missedUpdatesRequest.versionsAndRanges);
params.set("onlyIfActive", false);
params.set("skipDbq", true);
- return request(params, "Failed on getting missed updates from the leader");
+ return doRtgRequest(params, "Failed on getting missed updates from the
leader");
}
private boolean handleUpdates(
@@ -333,10 +331,13 @@ public class PeerSyncWithLeader implements
SolrMetricProducer {
return true;
}
- private NamedList<Object> request(ModifiableSolrParams params, String
onFail) {
+ private NamedList<Object> doRtgRequest(ModifiableSolrParams params, String
onFail) {
try {
- QueryRequest request = new QueryRequest(params, SolrRequest.METHOD.POST);
- QueryResponse rsp = clientToLeader.requestWithBaseUrl(leaderBaseUrl,
coreName, request);
+ var request =
+ new GenericSolrRequest(
+ SolrRequest.METHOD.GET, "/get",
SolrRequest.SolrRequestType.QUERY, params)
+ .setRequiresCollection(true);
+ var rsp = clientToLeader.requestWithBaseUrl(leaderBaseUrl, coreName,
request);
Exception exception = rsp.getException();
if (exception != null) {
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, onFail);
@@ -349,21 +350,19 @@ public class PeerSyncWithLeader implements
SolrMetricProducer {
private NamedList<Object> getVersions() {
ModifiableSolrParams params = new ModifiableSolrParams();
- params.set("qt", "/get");
params.set(DISTRIB, false);
params.set("getVersions", nUpdates);
params.set("fingerprint", doFingerprint);
- return request(params, "Failed to get recent versions from leader");
+ return doRtgRequest(params, "Failed to get recent versions from leader");
}
private boolean alreadyInSync() {
ModifiableSolrParams params = new ModifiableSolrParams();
- params.set("qt", "/get");
params.set(DISTRIB, false);
params.set("getFingerprint", String.valueOf(Long.MAX_VALUE));
- NamedList<Object> rsp = request(params, "Failed to get fingerprint from
leader");
+ NamedList<Object> rsp = doRtgRequest(params, "Failed to get fingerprint
from leader");
IndexFingerprint leaderFingerprint = getFingerprint(rsp);
return compareFingerprint(leaderFingerprint);
}
diff --git
a/solr/core/src/test/org/apache/solr/cloud/LeaderVoteWaitTimeoutTest.java
b/solr/core/src/test/org/apache/solr/cloud/LeaderVoteWaitTimeoutTest.java
index d8299d4fe9d..9aec02771d1 100644
--- a/solr/core/src/test/org/apache/solr/cloud/LeaderVoteWaitTimeoutTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/LeaderVoteWaitTimeoutTest.java
@@ -31,11 +31,13 @@ import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.apache.solr.JSONTestUtil;
import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.SolrRequest;
+import org.apache.solr.client.solrj.SolrRequest.SolrRequestType;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.cloud.SocketProxy;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
-import org.apache.solr.client.solrj.request.QueryRequest;
+import org.apache.solr.client.solrj.request.GenericSolrRequest;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.cloud.Replica;
import org.apache.solr.common.cloud.ZkStateReader;
@@ -335,8 +337,13 @@ public class LeaderVoteWaitTimeoutTest extends
SolrCloudTestCase {
private NamedList<Object> realTimeGetDocId(SolrClient solr, String docId)
throws SolrServerException, IOException {
- QueryRequest qr = new QueryRequest(params("qt", "/get", "id", docId,
"distrib", "false"));
- return solr.request(qr);
+ return solr.request(
+ new GenericSolrRequest(
+ SolrRequest.METHOD.GET,
+ "/get",
+ SolrRequestType.QUERY,
+ params("id", docId, "distrib", "false"))
+ .setRequiresCollection(true));
}
protected SolrClient getSolrClient(Replica replica, String coll) {
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java
b/solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java
index 0ef05c16988..8d2043da00e 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java
@@ -29,11 +29,13 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.apache.solr.JSONTestUtil;
import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.SolrRequest;
+import org.apache.solr.client.solrj.SolrRequest.SolrRequestType;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.cloud.SocketProxy;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
-import org.apache.solr.client.solrj.request.QueryRequest;
+import org.apache.solr.client.solrj.request.GenericSolrRequest;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.cloud.Replica;
import org.apache.solr.common.util.NamedList;
@@ -343,8 +345,13 @@ public class TestCloudConsistency extends
SolrCloudTestCase {
private NamedList<Object> realTimeGetDocId(SolrClient solr, String docId)
throws SolrServerException, IOException {
- QueryRequest qr = new QueryRequest(params("qt", "/get", "id", docId,
"distrib", "false"));
- return solr.request(qr);
+ return solr.request(
+ new GenericSolrRequest(
+ SolrRequest.METHOD.GET,
+ "/get",
+ SolrRequestType.QUERY,
+ params("id", docId, "distrib", "false"))
+ .setRequiresCollection(true));
}
protected SolrClient getHttpSolrClient(Replica replica, String coll) {
diff --git
a/solr/core/src/test/org/apache/solr/cloud/TestTlogReplayVsRecovery.java
b/solr/core/src/test/org/apache/solr/cloud/TestTlogReplayVsRecovery.java
index c45b57305ee..2545933f575 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestTlogReplayVsRecovery.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestTlogReplayVsRecovery.java
@@ -29,11 +29,12 @@ import java.util.concurrent.TimeoutException;
import org.apache.lucene.tests.util.LuceneTestCase.AwaitsFix;
import org.apache.solr.JSONTestUtil;
import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.SolrRequest;
+import org.apache.solr.client.solrj.SolrRequest.SolrRequestType;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.cloud.SocketProxy;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
-import org.apache.solr.client.solrj.request.QueryRequest;
-import org.apache.solr.client.solrj.response.QueryResponse;
+import org.apache.solr.client.solrj.request.GenericSolrRequest;
import org.apache.solr.client.solrj.response.RequestStatusState;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.cloud.Replica;
@@ -274,11 +275,14 @@ public class TestTlogReplayVsRecovery extends
SolrCloudTestCase {
*/
private void assertDocExists(final String clientName, final SolrClient
client, final String docId)
throws Exception {
- final QueryResponse rsp =
- (new QueryRequest(
- params("qt", "/get", "id", docId, "_trace", clientName,
"distrib", "false")))
+ final var rsp =
+ (new GenericSolrRequest(
+ SolrRequest.METHOD.GET,
+ "/get",
+ SolrRequestType.QUERY,
+ params("qt", "/get", "id", docId, "_trace", clientName,
"distrib", "false"))
+ .setRequiresCollection(true))
.process(client, COLLECTION);
- assertEquals(0, rsp.getStatus());
String match = JSONTestUtil.matchObj("/id", rsp.getResponse().get("doc"),
docId);
assertNull(
diff --git
a/solr/core/src/test/org/apache/solr/handler/ReplicationTestHelper.java
b/solr/core/src/test/org/apache/solr/handler/ReplicationTestHelper.java
index 51d5d72ee78..1127bbb48be 100644
--- a/solr/core/src/test/org/apache/solr/handler/ReplicationTestHelper.java
+++ b/solr/core/src/test/org/apache/solr/handler/ReplicationTestHelper.java
@@ -34,9 +34,11 @@ import java.util.concurrent.TimeUnit;
import org.apache.lucene.tests.util.LuceneTestCase;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.SolrRequest;
+import org.apache.solr.client.solrj.SolrRequest.SolrRequestType;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.Http2SolrClient;
-import org.apache.solr.client.solrj.request.QueryRequest;
+import org.apache.solr.client.solrj.request.GenericSolrRequest;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
@@ -128,10 +130,12 @@ public final class ReplicationTestHelper {
// check vs /replication?command=indexversion call
ModifiableSolrParams params = new ModifiableSolrParams();
- params.set("qt", ReplicationHandler.PATH);
params.set("_trace", "assertVersions");
params.set("command", "indexversion");
- QueryRequest req = new QueryRequest(params);
+ var req =
+ new GenericSolrRequest(
+ SolrRequest.METHOD.GET, ReplicationHandler.PATH,
SolrRequestType.ADMIN, params)
+ .setRequiresCollection(true);
NamedList<Object> resp = client1.request(req);
assertReplicationResponseSucceeded(resp);
Long version = (Long) resp.get("indexversion");
@@ -205,8 +209,10 @@ public final class ReplicationTestHelper {
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("command", "details");
params.set("_trace", "getDetails");
- params.set("qt", ReplicationHandler.PATH);
- QueryRequest req = new QueryRequest(params);
+ var req =
+ new GenericSolrRequest(
+ SolrRequest.METHOD.GET, ReplicationHandler.PATH,
SolrRequestType.ADMIN, params)
+ .setRequiresCollection(true);
NamedList<Object> res = s.request(req);
assertReplicationResponseSucceeded(res);
diff --git
a/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
b/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
index 765a49f058a..4cf3bb4742d 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
@@ -48,13 +48,15 @@ import org.apache.lucene.util.Constants;
import org.apache.solr.BaseDistributedSearchTestCase;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
+import org.apache.solr.client.api.model.IndexVersionResponse;
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.SolrRequest.SolrRequestType;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.request.CoresApi;
import org.apache.solr.client.solrj.request.GenericSolrRequest;
-import org.apache.solr.client.solrj.request.QueryRequest;
+import org.apache.solr.client.solrj.request.ReplicationApi;
import org.apache.solr.client.solrj.request.UpdateRequest;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.SimpleSolrResponse;
@@ -201,8 +203,10 @@ public class TestReplicationHandler extends SolrTestCaseJ4
{
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("command", "details");
params.set("_trace", "getDetails");
- params.set("qt", ReplicationHandler.PATH);
- QueryRequest req = new QueryRequest(params);
+ var req =
+ new GenericSolrRequest(
+ SolrRequest.METHOD.GET, ReplicationHandler.PATH,
SolrRequestType.ADMIN, params)
+ .setRequiresCollection(true);
NamedList<Object> res = s.request(req);
assertReplicationResponseSucceeded(res);
@@ -215,18 +219,12 @@ public class TestReplicationHandler extends
SolrTestCaseJ4 {
return details;
}
- private NamedList<Object> getIndexVersion(SolrClient s) throws Exception {
+ private IndexVersionResponse getIndexVersion(SolrClient s, String coreName)
throws Exception {
- ModifiableSolrParams params = new ModifiableSolrParams();
- params.set("command", "indexversion");
- params.set("_trace", "getIndexVersion");
- params.set("qt", ReplicationHandler.PATH);
- QueryRequest req = new QueryRequest(params);
-
- NamedList<Object> res = s.request(req);
- assertReplicationResponseSucceeded(res);
-
- return res;
+ final var req = new ReplicationApi.FetchIndexVersion(coreName);
+ final var response = req.process(s);
+ assertReplicationResponseSucceeded(response);
+ return response;
}
private void reloadCore(JettySolrRunner jettySolrRunner, String core) throws
Exception {
@@ -234,8 +232,9 @@ public class TestReplicationHandler extends SolrTestCaseJ4 {
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("action", "reload");
params.set("core", core);
- params.set("qt", "/admin/cores");
- QueryRequest req = new QueryRequest(params);
+ var req =
+ new GenericSolrRequest(
+ SolrRequest.METHOD.POST, "/admin/cores", SolrRequestType.ADMIN,
params);
try (SolrClient adminClient = adminClient(jettySolrRunner)) {
NamedList<Object> res = adminClient.request(req);
@@ -1278,11 +1277,11 @@ public class TestReplicationHandler extends
SolrTestCaseJ4 {
BaseDistributedSearchTestCase.compare(leaderQueryResult,
followerQueryResult, 0, null);
assertNull(cmp);
- Object version = getIndexVersion(leaderClient).get("indexversion");
+ Long version = getIndexVersion(leaderClient,
DEFAULT_TEST_CORENAME).indexVersion;
reloadCore(leaderJetty, DEFAULT_TEST_COLLECTION_NAME);
- assertEquals(version, getIndexVersion(leaderClient).get("indexversion"));
+ assertEquals(version, getIndexVersion(leaderClient,
DEFAULT_TEST_CORENAME).indexVersion);
index(leaderClient, "id", docs + 10, "name", "name = 1");
index(leaderClient, "id", docs + 20, "name", "name = 2");
@@ -1834,4 +1833,10 @@ public class TestReplicationHandler extends
SolrTestCaseJ4 {
assertNotNull("Expected replication response to have 'status' field",
response.get("status"));
assertEquals("OK", response.get("status"));
}
+
+ private void assertReplicationResponseSucceeded(IndexVersionResponse
response) {
+ assertNotNull("null response from server", response);
+ assertNotNull("Expected replication response to have 'status' field",
response.status);
+ assertEquals("OK", response.status);
+ }
}
diff --git
a/solr/core/src/test/org/apache/solr/handler/admin/ShowFileRequestHandlerTest.java
b/solr/core/src/test/org/apache/solr/handler/admin/ShowFileRequestHandlerTest.java
index 0966c5684e3..8d81487abd0 100644
---
a/solr/core/src/test/org/apache/solr/handler/admin/ShowFileRequestHandlerTest.java
+++
b/solr/core/src/test/org/apache/solr/handler/admin/ShowFileRequestHandlerTest.java
@@ -23,11 +23,14 @@ import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.solr.SolrJettyTestBase;
import org.apache.solr.client.solrj.ResponseParser;
import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.SolrRequest;
+import org.apache.solr.client.solrj.SolrRequest.SolrRequestType;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.NoOpResponseParser;
-import org.apache.solr.client.solrj.request.QueryRequest;
-import org.apache.solr.client.solrj.response.QueryResponse;
+import org.apache.solr.client.solrj.request.GenericSolrRequest;
import org.apache.solr.common.SolrException;
+import org.apache.solr.common.params.ModifiableSolrParams;
+import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.ContentStreamBase;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.SolrCore;
@@ -49,10 +52,15 @@ public class ShowFileRequestHandlerTest extends
SolrJettyTestBase {
createAndStartJetty(legacyExampleCollection1SolrHome());
}
+ private GenericSolrRequest createShowFileRequest(SolrParams params) {
+ return new GenericSolrRequest(
+ SolrRequest.METHOD.GET, "/admin/file", SolrRequestType.ADMIN,
params)
+ .setRequiresCollection(true);
+ }
+
public void test404ViaHttp() {
SolrClient client = getSolrClient();
- QueryRequest request = new QueryRequest(params("file",
"does-not-exist-404.txt"));
- request.setPath("/admin/file");
+ var request = createShowFileRequest(params("file",
"does-not-exist-404.txt"));
SolrException e = expectThrows(SolrException.class, () ->
request.process(client));
assertEquals(404, e.code());
}
@@ -77,10 +85,8 @@ public class ShowFileRequestHandlerTest extends
SolrJettyTestBase {
SolrClient client = getSolrClient();
// assertQ(req("qt", "/admin/file")); TODO file bug that SolrJettyTestBase
extends
// SolrTestCaseJ4
- QueryRequest request = new QueryRequest();
- request.setPath("/admin/file");
- QueryResponse resp = request.process(client);
- assertEquals(0, resp.getStatus());
+ var request = createShowFileRequest(new ModifiableSolrParams());
+ var resp = request.process(client);
assertTrue(((NamedList) resp.getResponse().get("files")).size() > 0); //
some files
}
@@ -88,8 +94,7 @@ public class ShowFileRequestHandlerTest extends
SolrJettyTestBase {
SolrClient client = getSolrClient();
// assertQ(req("qt", "/admin/file"));
// TODO file bug that SolrJettyTestBase extends SolrTestCaseJ4
- QueryRequest request = new QueryRequest(params("file",
"managed-schema.xml"));
- request.setPath("/admin/file");
+ var request = createShowFileRequest(params("file", "managed-schema.xml"));
final AtomicBoolean readFile = new AtomicBoolean();
request.setResponseParser(
new ResponseParser() {
@@ -142,28 +147,26 @@ public class ShowFileRequestHandlerTest extends
SolrJettyTestBase {
public void testIllegalContentType() {
SolrClient client = getSolrClient();
- QueryRequest request =
- new QueryRequest(params("file", "managed-schema", "contentType",
"not/known"));
- request.setPath("/admin/file");
+ var request =
+ createShowFileRequest(params("file", "managed-schema", "contentType",
"not/known"));
request.setResponseParser(new NoOpResponseParser("xml"));
expectThrows(SolrException.class, () -> client.request(request));
}
public void testAbsoluteFilename() {
SolrClient client = getSolrClient();
- final QueryRequest request =
- new QueryRequest(params("file", "/etc/passwd", "contentType",
"text/plain; charset=utf-8"));
- request.setPath("/admin/file"); // absolute path not allowed
+ final var request =
+ createShowFileRequest(
+ params("file", "/etc/passwd", "contentType", "text/plain;
charset=utf-8"));
request.setResponseParser(new NoOpResponseParser("xml"));
expectThrows(SolrException.class, () -> client.request(request));
}
public void testEscapeConfDir() {
SolrClient client = getSolrClient();
- final QueryRequest request =
- new QueryRequest(
+ final var request =
+ createShowFileRequest(
params("file", "../../solr.xml", "contentType", "application/xml;
charset=utf-8"));
- request.setPath("/admin/file");
request.setResponseParser(new NoOpResponseParser("xml"));
var ex = expectThrows(SolrException.class, () -> client.request(request));
assertTrue(ex instanceof SolrClient.RemoteSolrException);
@@ -171,14 +174,13 @@ public class ShowFileRequestHandlerTest extends
SolrJettyTestBase {
public void testPathTraversalFilename() {
SolrClient client = getSolrClient();
- final QueryRequest request =
- new QueryRequest(
+ final var request =
+ createShowFileRequest(
params(
"file",
"../../../../../../etc/passwd",
"contentType",
"text/plain; charset=utf-8"));
- request.setPath("/admin/file");
request.setResponseParser(new NoOpResponseParser("xml"));
expectThrows(SolrException.class, () -> client.request(request));
}
diff --git a/solr/core/src/test/org/apache/solr/search/TestTaskManagement.java
b/solr/core/src/test/org/apache/solr/search/TestTaskManagement.java
index bb899761257..13c98d87ace 100644
--- a/solr/core/src/test/org/apache/solr/search/TestTaskManagement.java
+++ b/solr/core/src/test/org/apache/solr/search/TestTaskManagement.java
@@ -31,6 +31,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;
import org.apache.lucene.util.BytesRef;
import org.apache.solr.client.solrj.SolrRequest;
+import org.apache.solr.client.solrj.SolrRequest.SolrRequestType;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
import org.apache.solr.client.solrj.request.GenericSolrRequest;
@@ -219,8 +220,10 @@ public class TestTaskManagement extends SolrCloudTestCase {
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("queryUUID", queryID);
- SolrRequest<?> request = new QueryRequest(params);
- request.setPath("/tasks/cancel");
+ var request =
+ new GenericSolrRequest(
+ SolrRequest.METHOD.POST, "/tasks/cancel",
SolrRequestType.ADMIN, params)
+ .setRequiresCollection(true);
try {
NamedList<Object> queryResponse;
diff --git
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQuery.java
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQuery.java
index 5c3ba1f5303..d1b209d6921 100644
---
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQuery.java
+++
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQuery.java
@@ -25,7 +25,6 @@ import java.util.Optional;
import java.util.regex.Matcher;
import net.thisptr.jackson.jq.JsonQuery;
import net.thisptr.jackson.jq.exception.JsonQueryException;
-import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.util.DOMUtil;
import org.apache.solr.common.util.NamedList;
@@ -111,9 +110,6 @@ public class MetricsQuery {
}
}
- QueryRequest queryRequest = new QueryRequest(params);
- queryRequest.setPath(path);
-
List<JsonQuery> compiledQueries = new ArrayList<>();
if (jsonQueries != null) {
for (String jsonQuery : jsonQueries) {
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/QueryRequest.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/QueryRequest.java
index de3cdd78b9a..04b4d4e3a54 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/request/QueryRequest.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/request/QueryRequest.java
@@ -23,6 +23,9 @@ import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
/**
+ * For use with Solr's {@code SearchHandler}, generally at "/select". For
other handlers, try {@link
+ * GenericSolrRequest}.
+ *
* @since solr 1.3
*/
public class QueryRequest extends
CollectionRequiringSolrRequest<QueryResponse> {
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 c74a9ccbc80..a6d9c13e129 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
@@ -39,6 +39,7 @@ import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.lucene.tests.util.TestUtil;
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.SolrRequest.METHOD;
import org.apache.solr.client.solrj.SolrRequest.SolrRequestType;
import org.apache.solr.client.solrj.SolrServerException;
@@ -664,12 +665,14 @@ public class CloudHttp2SolrClientTest extends
SolrCloudTestCase {
.withSocketTimeout(60000, TimeUnit.MILLISECONDS)
.build()) {
ModifiableSolrParams params = new ModifiableSolrParams();
- params.set("qt", "/admin/mbeans");
params.set("stats", "true");
params.set("key", key);
params.set("cat", category);
// use generic request to avoid extra processing of queries
- QueryRequest req = new QueryRequest(params);
+ var req =
+ new GenericSolrRequest(
+ SolrRequest.METHOD.GET, "/admin/mbeans",
SolrRequestType.ADMIN, params)
+ .setRequiresCollection(true);
resp = client.request(req);
}
String name;
@@ -734,7 +737,6 @@ public class CloudHttp2SolrClientTest extends
SolrCloudTestCase {
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("action", "foobar"); // this should cause an error
- params.set("qt", adminPath);
var request =
new GenericSolrRequest(METHOD.GET, adminPath,
SolrRequestType.ADMIN, params);
diff --git
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientTest.java
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientTest.java
index ec6fe94d9f0..a43da7a8c1d 100644
---
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientTest.java
+++
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientTest.java
@@ -39,6 +39,7 @@ import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.lucene.tests.util.TestUtil;
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.SolrRequest.METHOD;
import org.apache.solr.client.solrj.SolrRequest.SolrRequestType;
import org.apache.solr.client.solrj.SolrServerException;
@@ -599,12 +600,14 @@ public class CloudSolrClientTest extends
SolrCloudTestCase {
.withSocketTimeout(60000, TimeUnit.MILLISECONDS)
.build()) {
ModifiableSolrParams params = new ModifiableSolrParams();
- params.set("qt", "/admin/mbeans");
params.set("stats", "true");
params.set("key", key);
params.set("cat", category);
// use generic request to avoid extra processing of queries
- QueryRequest req = new QueryRequest(params);
+ var req =
+ new GenericSolrRequest(
+ SolrRequest.METHOD.GET, "/admin/mbeans",
SolrRequestType.ADMIN, params)
+ .setRequiresCollection(true);
resp = client.request(req);
}
String name;