Skip to content

Commit c5d2c46

Browse files
committed
Revert "SOLR-17286: Remote Proxy via Jetty HttpClient (#3447)"
This reverts commit 3157010.
1 parent e87e8fb commit c5d2c46

File tree

13 files changed

+181
-201
lines changed

13 files changed

+181
-201
lines changed

solr/CHANGES.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ Dependency Upgrades
3636

3737
Other Changes
3838
---------------------
39-
* SOLR-17286: When proxying requests to another node, use Jetty HttpClient not Apache HttpClient.
40-
(David Smiley)
39+
(No changes)
4140

4241
================== 9.9.1 ==================
4342
Bug Fixes

solr/benchmark/src/java/org/apache/solr/bench/Docs.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@
2626
import java.util.concurrent.ConcurrentLinkedQueue;
2727
import java.util.concurrent.ExecutorService;
2828
import java.util.concurrent.Executors;
29+
import java.util.concurrent.TimeUnit;
2930
import org.apache.lucene.util.RamUsageEstimator;
3031
import org.apache.solr.bench.generators.MultiString;
3132
import org.apache.solr.bench.generators.SolrGen;
3233
import org.apache.solr.common.SolrDocument;
3334
import org.apache.solr.common.SolrInputDocument;
3435
import org.apache.solr.common.util.CollectionUtil;
35-
import org.apache.solr.common.util.ExecutorUtil;
3636
import org.apache.solr.common.util.SolrNamedThreadFactory;
3737
import org.apache.solr.common.util.SuppressForbidden;
3838
import org.quicktheories.core.Gen;
@@ -110,7 +110,11 @@ public Iterator<SolrInputDocument> preGenerate(int numDocs) throws InterruptedEx
110110
executorService.execute(() -> docs.add(Docs.this.inputDocument()));
111111
}
112112

113-
ExecutorUtil.shutdownAndAwaitTermination(executorService);
113+
executorService.shutdown();
114+
boolean result = executorService.awaitTermination(10, TimeUnit.MINUTES);
115+
if (!result) {
116+
throw new RuntimeException("Timeout waiting for doc adds to finish");
117+
}
114118
log(
115119
"done preGenerateDocs docs="
116120
+ docs.size()

solr/benchmark/src/test/org/apache/solr/bench/MiniClusterBenchStateTest.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,35 +26,38 @@
2626
import static org.apache.solr.bench.generators.SourceDSL.strings;
2727

2828
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
29+
import java.lang.invoke.MethodHandles;
2930
import java.util.Collections;
31+
import java.util.Iterator;
3032
import java.util.concurrent.TimeUnit;
3133
import org.apache.solr.SolrTestCaseJ4;
3234
import org.apache.solr.client.solrj.request.QueryRequest;
3335
import org.apache.solr.client.solrj.response.QueryResponse;
36+
import org.apache.solr.common.SolrInputDocument;
3437
import org.apache.solr.common.params.ModifiableSolrParams;
35-
import org.junit.After;
3638
import org.junit.Test;
3739
import org.openjdk.jmh.annotations.Mode;
3840
import org.openjdk.jmh.infra.BenchmarkParams;
3941
import org.openjdk.jmh.infra.IterationParams;
4042
import org.openjdk.jmh.runner.IterationType;
4143
import org.openjdk.jmh.runner.WorkloadParams;
4244
import org.openjdk.jmh.runner.options.TimeValue;
45+
import org.slf4j.Logger;
46+
import org.slf4j.LoggerFactory;
4347

4448
@ThreadLeakLingering(linger = 10)
4549
public class MiniClusterBenchStateTest extends SolrTestCaseJ4 {
46-
private MiniClusterState.MiniClusterBenchState miniBenchState;
47-
private BaseBenchState baseBenchState;
48-
private BenchmarkParams benchParams;
50+
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
4951

5052
@Test
5153
public void testMiniClusterState() throws Exception {
5254

5355
System.setProperty("workBaseDir", createTempDir("work").toString());
5456
System.setProperty("random.counts", "true");
5557

56-
miniBenchState = new MiniClusterState.MiniClusterBenchState();
57-
benchParams =
58+
MiniClusterState.MiniClusterBenchState miniBenchState =
59+
new MiniClusterState.MiniClusterBenchState();
60+
BenchmarkParams benchParams =
5861
new BenchmarkParams(
5962
"benchmark",
6063
"generatedTarget",
@@ -77,7 +80,7 @@ public void testMiniClusterState() throws Exception {
7780
"vmVersion",
7881
"jmhVersion",
7982
TimeValue.seconds(10));
80-
baseBenchState = new BaseBenchState();
83+
BaseBenchState baseBenchState = new BaseBenchState();
8184
baseBenchState.doSetup(benchParams);
8285
miniBenchState.doSetup(benchParams, baseBenchState);
8386

@@ -108,7 +111,7 @@ public void testMiniClusterState() throws Exception {
108111
.field(doubles().all());
109112

110113
int numDocs = 50;
111-
docs.preGenerate(numDocs);
114+
Iterator<SolrInputDocument> docIt = docs.preGenerate(numDocs);
112115

113116
miniBenchState.index(collection, docs, numDocs);
114117

@@ -121,12 +124,8 @@ public void testMiniClusterState() throws Exception {
121124
BaseBenchState.log("match all query result=" + result);
122125

123126
assertEquals(numDocs, result.getResults().getNumFound());
124-
}
125127

126-
@After
127-
public void after() throws Exception {
128128
BaseBenchState.doTearDown(benchParams);
129-
130129
miniBenchState.tearDown(benchParams);
131130
miniBenchState.shutdownMiniCluster(benchParams, baseBenchState);
132131
}

solr/core/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ dependencies {
122122
implementation 'org.eclipse.jetty:jetty-client'
123123
implementation 'org.eclipse.jetty:jetty-http'
124124
implementation 'org.eclipse.jetty:jetty-io'
125-
implementation 'org.eclipse.jetty:jetty-util'
126125
implementation 'org.eclipse.jetty.toolchain:jetty-servlet-api'
127126

128127
// ZooKeeper

solr/core/src/java/org/apache/solr/api/V2HttpCall.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ private boolean invokeJerseyRequest(
349349
}
350350

351351
/**
352-
* Differentiate between "admin" and "remoteproxy"-type requests; executing each as appropriate.
352+
* Differentiate between "admin" and "remotequery"-type requests; executing each as appropriate.
353353
*
354354
* <p>The JAX-RS framework used by {@link V2HttpCall} doesn't provide any easy way to check in
355355
* advance whether a Jersey application can handle an incoming request. This, in turn, makes it
@@ -360,7 +360,7 @@ private boolean invokeJerseyRequest(
360360
* <p>This method uses this strategy to differentiate between admin requests that don't require a
361361
* {@link SolrCore}, but whose path happen to contain a core/collection name (e.g.
362362
* ADDREPLICAPROP's path of
363-
* /collections/collName/shards/shardName/replicas/replicaName/properties), and "REMOTEPROXY"
363+
* /collections/collName/shards/shardName/replicas/replicaName/properties), and "REMOTEQUERY"
364364
* requests which do require a local SolrCore to process.
365365
*/
366366
@Override

solr/core/src/java/org/apache/solr/servlet/CoreContainerProvider.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import javax.servlet.ServletContextEvent;
5050
import javax.servlet.ServletContextListener;
5151
import javax.servlet.UnavailableException;
52+
import org.apache.http.client.HttpClient;
5253
import org.apache.lucene.store.MMapDirectory;
5354
import org.apache.lucene.util.VectorUtil;
5455
import org.apache.solr.client.api.util.SolrVersion;
@@ -83,6 +84,7 @@ public class CoreContainerProvider implements ServletContextListener {
8384
private final String metricTag = SolrMetricProducer.getUniqueMetricTag(this, null);
8485
private CoreContainer cores;
8586
private Properties extraProperties;
87+
private HttpClient httpClient;
8688
private SolrMetricManager metricManager;
8789
private RateLimitManager rateLimitManager;
8890
private String registryName;
@@ -121,6 +123,14 @@ CoreContainer getCoreContainer() throws UnavailableException {
121123
return cores;
122124
}
123125

126+
/**
127+
* @see SolrDispatchFilter#getHttpClient()
128+
*/
129+
HttpClient getHttpClient() throws UnavailableException {
130+
checkReady();
131+
return httpClient;
132+
}
133+
124134
private void checkReady() throws UnavailableException {
125135
// TODO throw AlreadyClosedException instead?
126136
if (cores == null) {
@@ -166,6 +176,7 @@ private void close() {
166176
}
167177
} finally {
168178
if (cc != null) {
179+
httpClient = null;
169180
cc.shutdown();
170181
}
171182
}
@@ -218,6 +229,7 @@ private void init(ServletContext servletContext) {
218229
});
219230

220231
coresInit = createCoreContainer(computeSolrHome(servletContext), extraProperties);
232+
this.httpClient = coresInit.getUpdateShardHandler().getDefaultHttpClient();
221233
setupJvmMetrics(coresInit, coresInit.getNodeConfig().getMetricsConfig());
222234

223235
SolrZkClient zkClient = null;

0 commit comments

Comments
 (0)