Skip to content

Commit 9f6ef0a

Browse files
authored
SOLR-17884: SolrJ, minimize org.apache.http usage (#3602)
SolrJ users not using deprecated SolrClients can safely exclude Apache HttpClient dependencies. * SolrJ Utils: Move org.apache.http usage to HttpClientUtil * SolrHttpConstants extracted from HttpClientUtil Did *not* bother updating deprecated classes that refer to HttpClientUtil; not necessary.
1 parent d3bc132 commit 9f6ef0a

32 files changed

Lines changed: 250 additions & 197 deletions

solr/CHANGES.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,9 @@ Improvements
239239

240240
* SOLR-17893: Speed up Remote Proxy for high QPS, utilizing ClusterState caching. (Houston Putman)
241241

242+
* SOLR-17884: SolrJ users not using deprecated SolrClients can safely exclude Apache HttpClient dependencies.
243+
(David Smiley)
244+
242245
Optimizations
243246
---------------------
244247
(No changes)

solr/core/src/java/org/apache/solr/core/SolrXmlConfig.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
import java.util.regex.Pattern;
3939
import java.util.stream.Collectors;
4040
import javax.management.MBeanServer;
41-
import org.apache.solr.client.solrj.impl.HttpClientUtil;
41+
import org.apache.solr.client.solrj.impl.SolrHttpConstants;
4242
import org.apache.solr.cloud.ClusterSingleton;
4343
import org.apache.solr.cluster.placement.PlacementPluginFactory;
4444
import org.apache.solr.common.ConfigNode;
@@ -435,10 +435,10 @@ private static UpdateShardHandlerConfig loadUpdateConfig(
435435

436436
boolean defined = false;
437437

438-
int maxUpdateConnections = HttpClientUtil.DEFAULT_MAXCONNECTIONS;
439-
int maxUpdateConnectionsPerHost = HttpClientUtil.DEFAULT_MAXCONNECTIONSPERHOST;
440-
int distributedSocketTimeout = HttpClientUtil.DEFAULT_SO_TIMEOUT;
441-
int distributedConnectionTimeout = HttpClientUtil.DEFAULT_CONNECT_TIMEOUT;
438+
int maxUpdateConnections = SolrHttpConstants.DEFAULT_MAXCONNECTIONS;
439+
int maxUpdateConnectionsPerHost = SolrHttpConstants.DEFAULT_MAXCONNECTIONSPERHOST;
440+
int distributedSocketTimeout = SolrHttpConstants.DEFAULT_SO_TIMEOUT;
441+
int distributedConnectionTimeout = SolrHttpConstants.DEFAULT_CONNECT_TIMEOUT;
442442
String metricNameStrategy = UpdateShardHandlerConfig.DEFAULT_METRICNAMESTRATEGY;
443443
int maxRecoveryThreads = UpdateShardHandlerConfig.DEFAULT_MAXRECOVERYTHREADS;
444444

solr/core/src/java/org/apache/solr/handler/IndexFetcher.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@
9191
import org.apache.solr.client.api.model.FileMetaData;
9292
import org.apache.solr.client.solrj.SolrServerException;
9393
import org.apache.solr.client.solrj.impl.Http2SolrClient;
94-
import org.apache.solr.client.solrj.impl.HttpClientUtil;
9594
import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
95+
import org.apache.solr.client.solrj.impl.SolrHttpConstants;
9696
import org.apache.solr.client.solrj.request.QueryRequest;
9797
import org.apache.solr.cloud.CloudDescriptor;
9898
import org.apache.solr.cloud.ZkController;
@@ -284,10 +284,10 @@ public IndexFetcher(
284284
String compress = (String) initArgs.get(COMPRESSION);
285285
useInternalCompression = ReplicationHandler.INTERNAL.equals(compress);
286286
useExternalCompression = ReplicationHandler.EXTERNAL.equals(compress);
287-
soTimeout = getParameter(initArgs, HttpClientUtil.PROP_SO_TIMEOUT, 120000, null);
287+
soTimeout = getParameter(initArgs, SolrHttpConstants.PROP_SO_TIMEOUT, 120000, null);
288288

289-
String httpBasicAuthUser = (String) initArgs.get(HttpClientUtil.PROP_BASIC_AUTH_USER);
290-
String httpBasicAuthPassword = (String) initArgs.get(HttpClientUtil.PROP_BASIC_AUTH_PASS);
289+
String httpBasicAuthUser = (String) initArgs.get(SolrHttpConstants.PROP_BASIC_AUTH_USER);
290+
String httpBasicAuthPassword = (String) initArgs.get(SolrHttpConstants.PROP_BASIC_AUTH_PASS);
291291
solrClient =
292292
createSolrClient(solrCore, httpBasicAuthUser, httpBasicAuthPassword, leaderBaseUrl);
293293
}

solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@
3131
import java.util.stream.Collectors;
3232
import org.apache.solr.client.solrj.SolrClient;
3333
import org.apache.solr.client.solrj.impl.Http2SolrClient;
34-
import org.apache.solr.client.solrj.impl.HttpClientUtil;
3534
import org.apache.solr.client.solrj.impl.LBHttp2SolrClient;
3635
import org.apache.solr.client.solrj.impl.LBSolrClient;
36+
import org.apache.solr.client.solrj.impl.SolrHttpConstants;
3737
import org.apache.solr.client.solrj.request.QueryRequest;
3838
import org.apache.solr.client.solrj.routing.AffinityReplicaListTransformerFactory;
3939
import org.apache.solr.client.solrj.routing.ReplicaListTransformer;
@@ -294,17 +294,18 @@ public void init(PluginInfo info) {
294294
int connectionTimeout =
295295
getParameter(
296296
args,
297-
HttpClientUtil.PROP_CONNECTION_TIMEOUT,
298-
HttpClientUtil.DEFAULT_CONNECT_TIMEOUT,
297+
SolrHttpConstants.PROP_CONNECTION_TIMEOUT,
298+
SolrHttpConstants.DEFAULT_CONNECT_TIMEOUT,
299299
sb);
300300
int maxConnectionsPerHost =
301301
getParameter(
302302
args,
303-
HttpClientUtil.PROP_MAX_CONNECTIONS_PER_HOST,
304-
HttpClientUtil.DEFAULT_MAXCONNECTIONSPERHOST,
303+
SolrHttpConstants.PROP_MAX_CONNECTIONS_PER_HOST,
304+
SolrHttpConstants.DEFAULT_MAXCONNECTIONSPERHOST,
305305
sb);
306306
int soTimeout =
307-
getParameter(args, HttpClientUtil.PROP_SO_TIMEOUT, HttpClientUtil.DEFAULT_SO_TIMEOUT, sb);
307+
getParameter(
308+
args, SolrHttpConstants.PROP_SO_TIMEOUT, SolrHttpConstants.DEFAULT_SO_TIMEOUT, sb);
308309

309310
this.defaultClient =
310311
new Http2SolrClient.Builder()

solr/core/src/java/org/apache/solr/update/UpdateShardHandler.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import java.util.concurrent.ThreadFactory;
2525
import java.util.concurrent.TimeUnit;
2626
import org.apache.solr.client.solrj.impl.Http2SolrClient;
27-
import org.apache.solr.client.solrj.impl.HttpClientUtil;
27+
import org.apache.solr.client.solrj.impl.SolrHttpConstants;
2828
import org.apache.solr.common.SolrException;
2929
import org.apache.solr.common.params.ModifiableSolrParams;
3030
import org.apache.solr.common.util.ExecutorUtil;
@@ -73,22 +73,22 @@ public class UpdateShardHandler implements SolrInfoBean {
7373

7474
private SolrMetricsContext solrMetricsContext;
7575

76-
private int socketTimeout = HttpClientUtil.DEFAULT_SO_TIMEOUT;
77-
private int connectionTimeout = HttpClientUtil.DEFAULT_CONNECT_TIMEOUT;
76+
private int socketTimeout = SolrHttpConstants.DEFAULT_SO_TIMEOUT;
77+
private int connectionTimeout = SolrHttpConstants.DEFAULT_CONNECT_TIMEOUT;
7878

7979
public UpdateShardHandler(UpdateShardHandlerConfig cfg) {
8080

8181
ModifiableSolrParams clientParams = new ModifiableSolrParams();
8282
if (cfg != null) {
83-
clientParams.set(HttpClientUtil.PROP_SO_TIMEOUT, cfg.getDistributedSocketTimeout());
83+
clientParams.set(SolrHttpConstants.PROP_SO_TIMEOUT, cfg.getDistributedSocketTimeout());
8484
clientParams.set(
85-
HttpClientUtil.PROP_CONNECTION_TIMEOUT, cfg.getDistributedConnectionTimeout());
85+
SolrHttpConstants.PROP_CONNECTION_TIMEOUT, cfg.getDistributedConnectionTimeout());
8686
// following is done only for logging complete configuration.
8787
// The maxConnections and maxConnectionsPerHost have already been specified on the connection
8888
// manager
89-
clientParams.set(HttpClientUtil.PROP_MAX_CONNECTIONS, cfg.getMaxUpdateConnections());
89+
clientParams.set(SolrHttpConstants.PROP_MAX_CONNECTIONS, cfg.getMaxUpdateConnections());
9090
clientParams.set(
91-
HttpClientUtil.PROP_MAX_CONNECTIONS_PER_HOST, cfg.getMaxUpdateConnectionsPerHost());
91+
SolrHttpConstants.PROP_MAX_CONNECTIONS_PER_HOST, cfg.getMaxUpdateConnectionsPerHost());
9292
socketTimeout = cfg.getDistributedSocketTimeout();
9393
connectionTimeout = cfg.getDistributedConnectionTimeout();
9494
}

solr/core/src/java/org/apache/solr/update/UpdateShardHandlerConfig.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717
package org.apache.solr.update;
1818

19-
import org.apache.solr.client.solrj.impl.HttpClientUtil;
19+
import org.apache.solr.client.solrj.impl.SolrHttpConstants;
2020

2121
public class UpdateShardHandlerConfig {
2222

@@ -25,17 +25,17 @@ public class UpdateShardHandlerConfig {
2525

2626
public static final UpdateShardHandlerConfig DEFAULT =
2727
new UpdateShardHandlerConfig(
28-
HttpClientUtil.DEFAULT_MAXCONNECTIONS,
29-
HttpClientUtil.DEFAULT_MAXCONNECTIONSPERHOST,
30-
HttpClientUtil.DEFAULT_SO_TIMEOUT,
31-
HttpClientUtil.DEFAULT_CONNECT_TIMEOUT,
28+
SolrHttpConstants.DEFAULT_MAXCONNECTIONS,
29+
SolrHttpConstants.DEFAULT_MAXCONNECTIONSPERHOST,
30+
SolrHttpConstants.DEFAULT_SO_TIMEOUT,
31+
SolrHttpConstants.DEFAULT_CONNECT_TIMEOUT,
3232
DEFAULT_METRICNAMESTRATEGY,
3333
DEFAULT_MAXRECOVERYTHREADS);
3434

3535
public static final UpdateShardHandlerConfig TEST_DEFAULT =
3636
new UpdateShardHandlerConfig(
37-
HttpClientUtil.DEFAULT_MAXCONNECTIONS,
38-
HttpClientUtil.DEFAULT_MAXCONNECTIONSPERHOST,
37+
SolrHttpConstants.DEFAULT_MAXCONNECTIONS,
38+
SolrHttpConstants.DEFAULT_MAXCONNECTIONSPERHOST,
3939
30000,
4040
30000,
4141
UpdateShardHandlerConfig.DEFAULT_METRICNAMESTRATEGY,

solr/core/src/test/org/apache/solr/cloud/RecoveryZkTestWithAuth.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
import org.apache.solr.client.solrj.SolrResponse;
2828
import org.apache.solr.client.solrj.SolrServerException;
2929
import org.apache.solr.client.solrj.impl.CloudLegacySolrClient;
30-
import org.apache.solr.client.solrj.impl.HttpClientUtil;
3130
import org.apache.solr.client.solrj.impl.HttpSolrClient;
31+
import org.apache.solr.client.solrj.impl.SolrHttpConstants;
3232
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
3333
import org.apache.solr.client.solrj.request.QueryRequest;
3434
import org.apache.solr.client.solrj.request.UpdateRequest;
@@ -48,7 +48,7 @@ public static void setupCluster() throws Exception {
4848
// for context)
4949
if (rarely()) {
5050
System.setProperty(
51-
HttpClientUtil.SYS_PROP_HTTP_CLIENT_BUILDER_FACTORY,
51+
SolrHttpConstants.SYS_PROP_HTTP_CLIENT_BUILDER_FACTORY,
5252
"org.apache.solr.client.solrj.impl.PreemptiveBasicAuthClientBuilderFactory");
5353
System.setProperty("solr.security.auth.basicauth.credentials", SecurityJson.USER_PASS);
5454
}

solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudClusterSSL.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.apache.solr.client.solrj.impl.Http2SolrClient;
4040
import org.apache.solr.client.solrj.impl.HttpClientUtil;
4141
import org.apache.solr.client.solrj.impl.HttpSolrClient;
42+
import org.apache.solr.client.solrj.impl.SolrHttpConstants;
4243
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
4344
import org.apache.solr.client.solrj.request.CoreAdminRequest;
4445
import org.apache.solr.common.cloud.ZkStateReader;
@@ -81,7 +82,7 @@ public class TestMiniSolrCloudClusterSSL extends SolrTestCaseJ4 {
8182

8283
@Rule
8384
public TestRule syspropRestore =
84-
new TestRuleRestoreSystemProperties(HttpClientUtil.SYS_PROP_CHECK_PEER_NAME);
85+
new TestRuleRestoreSystemProperties(SolrHttpConstants.SYS_PROP_CHECK_PEER_NAME);
8586

8687
@Before
8788
public void before() {
@@ -177,7 +178,8 @@ private void checkClusterWithNodeReplacement(SSLTestConfig sslConfig) throws Exc
177178
SSLContext.setDefault(
178179
sslConfig.isSSLMode() ? sslConfig.buildClientSSLContext() : DEFAULT_SSL_CONTEXT);
179180
System.setProperty(
180-
HttpClientUtil.SYS_PROP_CHECK_PEER_NAME, Boolean.toString(sslConfig.getCheckPeerName()));
181+
SolrHttpConstants.SYS_PROP_CHECK_PEER_NAME,
182+
Boolean.toString(sslConfig.getCheckPeerName()));
181183
HttpClientUtil.resetHttpClientBuilder();
182184
Http2SolrClient.resetSslContextFactory();
183185

@@ -206,7 +208,7 @@ public void testSslWithInvalidPeerName() throws Exception {
206208

207209
// now initialize a client that still uses the existing SSLContext/Provider, so it will accept
208210
// our existing certificate, but *does* care about validating the peer name
209-
System.setProperty(HttpClientUtil.SYS_PROP_CHECK_PEER_NAME, "true");
211+
System.setProperty(SolrHttpConstants.SYS_PROP_CHECK_PEER_NAME, "true");
210212
HttpClientUtil.resetHttpClientBuilder();
211213
Http2SolrClient.resetSslContextFactory();
212214

solr/core/src/test/org/apache/solr/core/TestHttpSolrClientProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import static org.mockito.Mockito.verify;
2323

2424
import org.apache.solr.SolrTestCase;
25-
import org.apache.solr.client.solrj.impl.HttpClientUtil;
25+
import org.apache.solr.client.solrj.impl.SolrHttpConstants;
2626
import org.apache.solr.metrics.SolrMetricsContext;
2727
import org.apache.solr.update.UpdateShardHandlerConfig;
2828
import org.junit.Before;
@@ -46,7 +46,7 @@ public void test_when_updateShardHandler_cfg_is_null() {
4646
try (var httpSolrClientProvider = new HttpSolrClientProvider(null, parentSolrMetricCtx); ) {
4747
assertEquals(
4848
httpSolrClientProvider.getSolrClient().getIdleTimeout(),
49-
HttpClientUtil.DEFAULT_SO_TIMEOUT);
49+
SolrHttpConstants.DEFAULT_SO_TIMEOUT);
5050
}
5151
}
5252

solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.apache.solr.client.solrj.SolrRequest;
3939
import org.apache.solr.client.solrj.SolrServerException;
4040
import org.apache.solr.client.solrj.impl.BaseHttpSolrClient.RemoteExecutionException;
41+
import org.apache.solr.client.solrj.impl.HttpClientUtil;
4142
import org.apache.solr.client.solrj.impl.HttpSolrClient;
4243
import org.apache.solr.client.solrj.request.FileStoreApi;
4344
import org.apache.solr.client.solrj.request.V2Request;
@@ -182,7 +183,7 @@ public void testFileStoreManagement() throws Exception {
182183
j.getBaseURLV2() + "/cluster/filestore/files" + "/package/mypkg/v1.0/runtimelibs.jar";
183184
HttpDelete del = new HttpDelete(path);
184185
try (HttpSolrClient cl = (HttpSolrClient) j.newClient()) {
185-
Utils.executeHttpMethod(cl.getHttpClient(), path, Utils.JSONCONSUMER, del);
186+
HttpClientUtil.executeHttpMethod(cl.getHttpClient(), path, Utils.JSONCONSUMER, del);
186187
}
187188
expected = Collections.singletonMap(":files:/package/mypkg/v1.0/runtimelibs.jar", null);
188189
checkAllNodesForFile(cluster, "/package/mypkg/v1.0/runtimelibs.jar", expected, false);
@@ -205,7 +206,7 @@ public static void checkAllNodesForFile(
205206
if (verifyContent) {
206207
try (HttpSolrClient solrClient = (HttpSolrClient) jettySolrRunner.newClient()) {
207208
ByteBuffer buf =
208-
Utils.executeGET(
209+
HttpClientUtil.executeGET(
209210
solrClient.getHttpClient(),
210211
baseUrl + "/cluster/filestore/files" + path,
211212
Utils.newBytesConsumer(Integer.MAX_VALUE));
@@ -230,7 +231,7 @@ public Fetcher(String s, JettySolrRunner jettySolrRunner) {
230231
public NavigableObject call() throws Exception {
231232
try (HttpSolrClient solrClient = (HttpSolrClient) jetty.newClient()) {
232233
return (NavigableObject)
233-
Utils.executeGET(solrClient.getHttpClient(), this.url, JAVABINCONSUMER);
234+
HttpClientUtil.executeGET(solrClient.getHttpClient(), this.url, JAVABINCONSUMER);
234235
}
235236
}
236237

0 commit comments

Comments
 (0)