Skip to content

Commit 9a1c520

Browse files
authored
Improve usages of GenericSolrRequest (request type, http method, requiresCollection) (#3423)
1 parent d974177 commit 9a1c520

File tree

13 files changed

+108
-73
lines changed

13 files changed

+108
-73
lines changed

solr/core/src/java/org/apache/solr/cli/ExportTool.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -264,8 +264,10 @@ void fetchUniqueKey() throws SolrServerException, IOException {
264264
new GenericSolrRequest(
265265
SolrRequest.METHOD.GET,
266266
"/schema/uniquekey",
267-
SolrParams.of("collection", coll))
268-
.setRequiresCollection(true));
267+
SolrRequest.SolrRequestType.ADMIN,
268+
SolrParams.of())
269+
.setRequiresCollection(true),
270+
coll);
269271
uniqueKey = (String) response.get("uniqueKey");
270272
}
271273

solr/core/src/java/org/apache/solr/handler/designer/SchemaDesignerConfigSetHelper.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,14 @@ Map<String, Object> analyzeField(String configSet, String fieldName, String fiel
130130
solrParams.set("analysis.showmatch", true);
131131
solrParams.set("analysis.fieldname", fieldName);
132132
solrParams.set("analysis.fieldvalue", "POST");
133-
var request = new GenericSolrRequest(SolrRequest.METHOD.POST, "/analysis/field", solrParams);
133+
var request =
134+
new GenericSolrRequest(
135+
SolrRequest.METHOD.POST,
136+
"/analysis/field",
137+
SolrRequest.SolrRequestType.ADMIN,
138+
solrParams)
139+
.setRequiresCollection(true);
134140
request.withContent(fieldText.getBytes(StandardCharsets.UTF_8), "text/plain");
135-
request.setRequiresCollection(true);
136141
request.setResponseParser(new JsonMapResponseParser());
137142
try {
138143
var resp = request.process(cloudClient(), mutableId).getResponse();

solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import org.apache.solr.client.solrj.SolrRequest.METHOD;
3333
import org.apache.solr.client.solrj.SolrServerException;
3434
import org.apache.solr.client.solrj.request.GenericSolrRequest;
35-
import org.apache.solr.client.solrj.response.SimpleSolrResponse;
3635
import org.apache.solr.common.SolrException;
3736
import org.apache.solr.common.SolrException.ErrorCode;
3837
import org.apache.solr.common.SolrInputDocument;
@@ -681,8 +680,9 @@ private UpdateCommand fetchFullUpdateFromLeader(AddUpdateCommand inplaceAdd, lon
681680
params.set(DISTRIB, false);
682681
params.set("getInputDocument", id);
683682
params.set("onlyIfActive", true);
684-
SolrRequest<SimpleSolrResponse> ur =
685-
new GenericSolrRequest(METHOD.GET, "/get", params).setRequiresCollection(true);
683+
var ur =
684+
new GenericSolrRequest(METHOD.GET, "/get", SolrRequest.SolrRequestType.ADMIN, params)
685+
.setRequiresCollection(true);
686686

687687
String leaderUrl = getLeaderUrl(id);
688688

solr/core/src/test/org/apache/solr/cloud/api/collections/TestCollectionAPI.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -640,7 +640,6 @@ private void clusterStatusAliasTest() throws Exception {
640640
params.set("collection", "notAnAliasOrCollection");
641641
request =
642642
new GenericSolrRequest(METHOD.GET, "/admin/collections", SolrRequestType.ADMIN, params);
643-
request.setPath("/admin/collections");
644643

645644
// SOLR-12938 - this should still cause an exception
646645
try {
@@ -1258,11 +1257,10 @@ private Map<String, String> getProps(
12581257
private void missingParamsError(CloudSolrClient client, ModifiableSolrParams origParams)
12591258
throws IOException, SolrServerException {
12601259

1261-
GenericSolrRequest request;
12621260
try {
1263-
request =
1261+
var request =
12641262
new GenericSolrRequest(
1265-
METHOD.GET, "/admin/collections", SolrRequestType.ADMIN, origParams);
1263+
METHOD.POST, "/admin/collections", SolrRequestType.ADMIN, origParams);
12661264
client.request(request);
12671265
fail("Should have thrown a SolrException due to lack of a required parameter.");
12681266
} catch (SolrException se) {
@@ -1352,7 +1350,7 @@ public void testCreateCollectionBooleanValues() throws Exception {
13521350
params.set("numShards", "1");
13531351
params.set(CollectionAdminParams.PER_REPLICA_STATE, "False");
13541352
var request =
1355-
new GenericSolrRequest(METHOD.GET, "/admin/collections", SolrRequestType.ADMIN, params);
1353+
new GenericSolrRequest(METHOD.POST, "/admin/collections", SolrRequestType.ADMIN, params);
13561354

13571355
try {
13581356
client.request(request);

solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1556,10 +1556,11 @@ public void testEmptyBackups() throws Exception {
15561556

15571557
{ // initial request w/o any committed docs
15581558
final String backupName = "empty_backup1";
1559-
final GenericSolrRequest req =
1559+
final var req =
15601560
new GenericSolrRequest(
1561-
SolrRequest.METHOD.GET,
1561+
SolrRequest.METHOD.POST,
15621562
"/replication",
1563+
SolrRequest.SolrRequestType.ADMIN,
15631564
params("command", "backup", "location", backupDir.toString(), "name", backupName))
15641565
.setRequiresCollection(true);
15651566
final TimeOut timeout = new TimeOut(30, TimeUnit.SECONDS, TimeSource.NANO_TIME);
@@ -1579,10 +1580,11 @@ public void testEmptyBackups() throws Exception {
15791580

15801581
{ // second backup w/uncommitted doc
15811582
final String backupName = "empty_backup2";
1582-
final GenericSolrRequest req =
1583+
final var req =
15831584
new GenericSolrRequest(
1584-
SolrRequest.METHOD.GET,
1585+
SolrRequest.METHOD.POST,
15851586
"/replication",
1587+
SolrRequest.SolrRequestType.ADMIN,
15861588
params("command", "backup", "location", backupDir.toString(), "name", backupName))
15871589
.setRequiresCollection(true);
15881590
final TimeOut timeout = new TimeOut(30, TimeUnit.SECONDS, TimeSource.NANO_TIME);

solr/core/src/test/org/apache/solr/handler/TestStressThreadBackup.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import org.apache.lucene.tests.util.LuceneTestCase.SuppressCodecs;
4141
import org.apache.lucene.tests.util.TestUtil;
4242
import org.apache.solr.client.solrj.SolrClient;
43+
import org.apache.solr.client.solrj.SolrRequest;
4344
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
4445
import org.apache.solr.client.solrj.request.GenericSolrRequest;
4546
import org.apache.solr.client.solrj.request.UpdateRequest;
@@ -134,8 +135,12 @@ public void testReplicationHandler() throws Exception {
134135
final BackupStatusChecker backupStatus = new BackupStatusChecker(coreClient);
135136

136137
/** no solrj API for ReplicationHandler */
137-
private GenericSolrRequest makeReplicationReq(SolrParams p) {
138-
return new GenericSolrRequest(GenericSolrRequest.METHOD.GET, "/replication", p)
138+
private SolrRequest<?> makeReplicationReq(SolrParams p) {
139+
return new GenericSolrRequest(
140+
GenericSolrRequest.METHOD.POST,
141+
"/replication",
142+
SolrRequest.SolrRequestType.ADMIN,
143+
p)
139144
.setRequiresCollection(true);
140145
}
141146

solr/core/src/test/org/apache/solr/pkg/TestPackages.java

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ public void testPluginLoading() throws Exception {
295295
new GenericSolrRequest(
296296
SolrRequest.METHOD.GET,
297297
"/stream",
298+
SolrRequest.SolrRequestType.ADMIN,
298299
new MapSolrParams(
299300
Map.of("collection", COLLECTION_NAME, WT, JAVABIN, "action", "plugins")))
300301
.setRequiresCollection(true),
@@ -436,18 +437,14 @@ public void testPluginLoading() throws Exception {
436437

437438
ModifiableSolrParams params = new ModifiableSolrParams();
438439
params.add("collection", COLLECTION_NAME);
439-
new GenericSolrRequest(SolrRequest.METHOD.POST, "/config/params", params) {
440+
new GenericSolrRequest(
441+
SolrRequest.METHOD.POST, "/config/params", SolrRequest.SolrRequestType.ADMIN, params) {
440442
@Override
441443
public RequestWriter.ContentWriter getContentWriter(String expectedType) {
442444
return new RequestWriter.StringPayloadContentWriter(
443445
"{set:{PKG_VERSIONS:{mypkg : '1.1'}}}", ClientUtils.TEXT_JSON);
444446
}
445-
446-
@Override
447-
public boolean requiresCollection() {
448-
return true;
449-
}
450-
}.process(cluster.getSolrClient());
447+
}.setRequiresCollection(true).process(cluster.getSolrClient());
451448

452449
add.version = "2.1";
453450
add.files = Arrays.asList(new String[] {FILE3, URP2, EXPR1});
@@ -465,18 +462,14 @@ public boolean requiresCollection() {
465462
verifyComponent(
466463
cluster.getSolrClient(), COLLECTION_NAME, "requestHandler", "/runtime", "mypkg", "1.1");
467464

468-
new GenericSolrRequest(SolrRequest.METHOD.POST, "/config/params", params) {
465+
new GenericSolrRequest(
466+
SolrRequest.METHOD.POST, "/config/params", SolrRequest.SolrRequestType.ADMIN, params) {
469467
@Override
470468
public RequestWriter.ContentWriter getContentWriter(String expectedType) {
471469
return new RequestWriter.StringPayloadContentWriter(
472470
"{set:{PKG_VERSIONS:{mypkg : '2.1'}}}", ClientUtils.TEXT_JSON);
473471
}
474-
475-
@Override
476-
public boolean requiresCollection() {
477-
return true;
478-
}
479-
}.process(cluster.getSolrClient());
472+
}.setRequiresCollection(true).process(cluster.getSolrClient());
480473

481474
// now, let's force every collection using 'mypkg' to refresh
482475
// so that it uses version 2.1
@@ -567,13 +560,15 @@ private void verifyComponent(
567560
"meta",
568561
"true"));
569562

570-
GenericSolrRequest req1 =
571-
new GenericSolrRequest(SolrRequest.METHOD.GET, "/config/" + componentType, params)
572-
.setRequiresCollection(true);
573563
TestDistribFileStore.assertResponseValues(
574564
10,
575565
client,
576-
req1,
566+
new GenericSolrRequest(
567+
SolrRequest.METHOD.GET,
568+
"/config/" + componentType,
569+
SolrRequest.SolrRequestType.ADMIN,
570+
params)
571+
.setRequiresCollection(true),
577572
Map.of(
578573
":config:" + componentType + ":" + componentName + ":_packageinfo_:package", pkg,
579574
":config:" + componentType + ":" + componentName + ":_packageinfo_:version", version));

solr/core/src/test/org/apache/solr/search/TestTaskManagement.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.apache.solr.cloud.SolrCloudTestCase;
3939
import org.apache.solr.common.SolrInputDocument;
4040
import org.apache.solr.common.params.ModifiableSolrParams;
41+
import org.apache.solr.common.params.SolrParams;
4142
import org.apache.solr.common.util.ExecutorUtil;
4243
import org.apache.solr.common.util.NamedList;
4344
import org.hamcrest.Matcher;
@@ -106,8 +107,9 @@ public void testNonExistentQuery() throws Exception {
106107
ModifiableSolrParams params = new ModifiableSolrParams();
107108
params.set("queryUUID", "foobar");
108109

109-
GenericSolrRequest request =
110-
new GenericSolrRequest(SolrRequest.METHOD.GET, "/tasks/cancel", params)
110+
var request =
111+
new GenericSolrRequest(
112+
SolrRequest.METHOD.GET, "/tasks/cancel", SolrRequest.SolrRequestType.ADMIN, params)
111113
.setRequiresCollection(true);
112114
NamedList<Object> queryResponse = cluster.getSolrClient(COLLECTION_NAME).request(request);
113115

@@ -185,7 +187,11 @@ private NamedList<String> listTasks() throws SolrServerException, IOException {
185187
cluster
186188
.getSolrClient(COLLECTION_NAME)
187189
.request(
188-
new GenericSolrRequest(SolrRequest.METHOD.GET, "/tasks/list")
190+
new GenericSolrRequest(
191+
SolrRequest.METHOD.GET,
192+
"/tasks/list",
193+
SolrRequest.SolrRequestType.ADMIN,
194+
SolrParams.of())
189195
.setRequiresCollection(true));
190196
return (NamedList<String>) response.get("taskList");
191197
}
@@ -195,8 +201,9 @@ public void testCheckSpecificQueryStatus() throws Exception {
195201
ModifiableSolrParams params = new ModifiableSolrParams();
196202
params.set("taskUUID", "25");
197203

198-
GenericSolrRequest request =
199-
new GenericSolrRequest(SolrRequest.METHOD.GET, "/tasks/list", params)
204+
var request =
205+
new GenericSolrRequest(
206+
SolrRequest.METHOD.GET, "/tasks/list", SolrRequest.SolrRequestType.ADMIN, params)
200207
.setRequiresCollection(true);
201208
NamedList<Object> queryResponse = cluster.getSolrClient(COLLECTION_NAME).request(request);
202209

solr/core/src/test/org/apache/solr/util/TestCborDataFormat.java

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,17 @@
4040
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
4141
import org.apache.solr.client.solrj.request.GenericSolrRequest;
4242
import org.apache.solr.client.solrj.request.QueryRequest;
43-
import org.apache.solr.client.solrj.request.RequestWriter;
4443
import org.apache.solr.client.solrj.request.UpdateRequest;
4544
import org.apache.solr.client.solrj.response.QueryResponse;
45+
import org.apache.solr.client.solrj.util.ClientUtils;
4646
import org.apache.solr.cloud.MiniSolrCloudCluster;
4747
import org.apache.solr.cloud.SolrCloudTestCase;
4848
import org.apache.solr.common.params.MapSolrParams;
49+
import org.apache.solr.common.params.SolrParams;
4950
import org.apache.solr.common.util.JavaBinCodec;
5051
import org.apache.solr.common.util.NamedList;
5152
import org.apache.solr.common.util.Utils;
5253
import org.apache.solr.handler.loader.CborLoader;
53-
import org.apache.solr.response.XMLResponseWriter;
5454

5555
public class TestCborDataFormat extends SolrCloudTestCase {
5656

@@ -109,12 +109,12 @@ public void testRoundTrip() throws Exception {
109109
}
110110
}
111111

112-
private void index(
113-
String testCollection, CloudSolrClient client, GenericSolrRequest r, boolean del)
112+
private void index(String testCollection, CloudSolrClient client, SolrRequest<?> r, boolean del)
114113
throws Exception {
115-
RTimer timer = new RTimer();
114+
// RTimer timer = new RTimer();
116115
client.request(r, testCollection);
117-
System.out.println("INDEX_TIME: " + r.contentWriter.getContentType() + " : " + timer.getTime());
116+
// System.out.println("INDEX_TIME: " + r.contentWriter.getContentType() + " : " +
117+
// timer.getTime());
118118
if (del) {
119119
UpdateRequest req = new UpdateRequest().deleteByQuery("*:*");
120120
req.setParam("commit", "true");
@@ -145,51 +145,61 @@ private byte[] runQuery(String testCollection, CloudSolrClient client, String wt
145145

146146
private void modifySchema(String testCollection, CloudSolrClient client)
147147
throws SolrServerException, IOException {
148-
GenericSolrRequest req =
149-
new GenericSolrRequest(SolrRequest.METHOD.POST, "/schema")
148+
client.request(
149+
new GenericSolrRequest(
150+
SolrRequest.METHOD.POST,
151+
"/schema",
152+
SolrRequest.SolrRequestType.ADMIN,
153+
SolrParams.of())
150154
.setRequiresCollection(true)
151-
.setContentWriter(
152-
new RequestWriter.StringPayloadContentWriter(
153-
"{\n"
155+
.withContent(
156+
("{\n"
154157
+ "\"add-field-type\" : {"
155158
+ "\"name\":\"knn_vector_10\",\"class\":\"solr.DenseVectorField\",\"vectorDimension\":10,\"similarityFunction\":\"cosine\",\"knnAlgorithm\":\"hnsw\"},\n"
156159
+ "\"add-field\" : ["
157160
+ "{\"name\":\"name\",\"type\":\"sortabletext\",\"multiValued\":false,\"stored\":true},\n"
158161
+ "{\"name\":\"initial_release_date\",\"type\":\"string\",\"stored\":true},\n"
159162
+ "{\"name\":\"directed_by\",\"type\":\"string\",\"multiValued\":true,\"stored\":true},\n"
160163
+ "{\"name\":\"genre\",\"type\":\"string\",\"multiValued\":true,\"stored\":true},\n"
161-
+ "{\"name\":\"film_vector\",\"type\":\"knn_vector_10\",\"indexed\":true,\"stored\":true}]}",
162-
XMLResponseWriter.CONTENT_TYPE_XML_UTF8));
163-
164-
client.request(req, testCollection);
164+
+ "{\"name\":\"film_vector\",\"type\":\"knn_vector_10\",\"indexed\":true,\"stored\":true}]}")
165+
.getBytes(StandardCharsets.UTF_8),
166+
ClientUtils.TEXT_JSON),
167+
testCollection);
165168
}
166169

167-
private GenericSolrRequest createJsonReq(byte[] b) {
170+
private SolrRequest<?> createJsonReq(byte[] b) {
168171
return new GenericSolrRequest(
169172
SolrRequest.METHOD.POST,
170173
"/update/json/docs",
174+
SolrRequest.SolrRequestType.UPDATE,
171175
new MapSolrParams(Map.of("commit", "true")))
172176
.setRequiresCollection(true)
173177
.withContent(b, "application/json");
174178
}
175179

176180
@SuppressWarnings("rawtypes")
177-
private GenericSolrRequest createJavabinReq(byte[] b) throws IOException {
181+
private SolrRequest<?> createJavabinReq(byte[] b) throws IOException {
178182
List l = (List) Utils.fromJSON(b);
179183
ByteArrayOutputStream baos = new ByteArrayOutputStream();
180184
new JavaBinCodec().marshal(l.iterator(), baos);
181185

182186
return new GenericSolrRequest(
183-
SolrRequest.METHOD.POST, "/update", new MapSolrParams(Map.of("commit", "true")))
184-
.withContent(baos.toByteArray(), "application/javabin")
185-
.setRequiresCollection(true);
187+
SolrRequest.METHOD.POST,
188+
"/update",
189+
SolrRequest.SolrRequestType.UPDATE,
190+
new MapSolrParams(Map.of("commit", "true")))
191+
.setRequiresCollection(true)
192+
.withContent(baos.toByteArray(), "application/javabin");
186193
}
187194

188-
private GenericSolrRequest createCborReq(byte[] b) throws IOException {
195+
private SolrRequest<?> createCborReq(byte[] b) throws IOException {
189196
return new GenericSolrRequest(
190-
SolrRequest.METHOD.POST, "/update/cbor", new MapSolrParams(Map.of("commit", "true")))
191-
.withContent(serializeToCbor(b), "application/cbor")
192-
.setRequiresCollection(true);
197+
SolrRequest.METHOD.POST,
198+
"/update/cbor",
199+
SolrRequest.SolrRequestType.UPDATE,
200+
new MapSolrParams(Map.of("commit", "true")))
201+
.setRequiresCollection(true)
202+
.withContent(serializeToCbor(b), "application/cbor");
193203
}
194204

195205
@SuppressWarnings("unchecked")

solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrScraper.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import net.thisptr.jackson.jq.JsonQuery;
3838
import net.thisptr.jackson.jq.exception.JsonQueryException;
3939
import org.apache.solr.client.solrj.SolrClient;
40+
import org.apache.solr.client.solrj.SolrRequest;
4041
import org.apache.solr.client.solrj.SolrRequest.METHOD;
4142
import org.apache.solr.client.solrj.SolrRequest.SolrRequestType;
4243
import org.apache.solr.client.solrj.SolrServerException;
@@ -134,16 +135,16 @@ protected MetricSamples request(SolrClient client, MetricsQuery query) throws IO
134135
zkHostLabelValue = ((CloudSolrClient) client).getClusterStateProvider().getQuorumHosts();
135136
}
136137

137-
GenericSolrRequest request = null;
138+
SolrRequest<?> request;
138139
if (ADMIN_PATHS.contains(query.getPath())) {
139140
request =
140141
new GenericSolrRequest(
141142
METHOD.GET, query.getPath(), SolrRequestType.ADMIN, query.getParameters());
142143
} else {
143144
request =
144145
new GenericSolrRequest(
145-
METHOD.GET, query.getPath(), SolrRequestType.ADMIN, query.getParameters());
146-
request.setRequiresCollection(true);
146+
METHOD.GET, query.getPath(), SolrRequestType.UNSPECIFIED, query.getParameters())
147+
.setRequiresCollection(true);
147148
}
148149

149150
NamedList<Object> response;

0 commit comments

Comments
 (0)