mirror of https://github.com/apache/lucene.git
SOLR-8097: Implement builder pattern design for constructing SolrJ clients and deprecate direct construction of clients
This commit is contained in:
parent
30d612f84e
commit
f479f16d3a
|
@ -106,6 +106,9 @@ Other Changes
|
||||||
* SOLR-8892: Allow SolrInfoMBeans to return different statistics for /jmx vs web ui calls.
|
* SOLR-8892: Allow SolrInfoMBeans to return different statistics for /jmx vs web ui calls.
|
||||||
(Gregory Chanan, Mark Miller)
|
(Gregory Chanan, Mark Miller)
|
||||||
|
|
||||||
|
* SOLR-8097: Implement builder pattern design for constructing SolrJ clients and also deprecate direct construction
|
||||||
|
of client objects. (Jason Gerlowski, Shawn Heisey, Anshum Gupta)
|
||||||
|
|
||||||
================== 6.0.0 ==================
|
================== 6.0.0 ==================
|
||||||
|
|
||||||
Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release
|
Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release
|
||||||
|
|
|
@ -22,6 +22,7 @@ import org.apache.solr.client.solrj.SolrQuery;
|
||||||
import org.apache.solr.client.solrj.SolrServerException;
|
import org.apache.solr.client.solrj.SolrServerException;
|
||||||
import org.apache.solr.client.solrj.impl.HttpClientUtil;
|
import org.apache.solr.client.solrj.impl.HttpClientUtil;
|
||||||
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
||||||
|
import org.apache.solr.client.solrj.impl.HttpSolrClient.Builder;
|
||||||
import org.apache.solr.client.solrj.impl.XMLResponseParser;
|
import org.apache.solr.client.solrj.impl.XMLResponseParser;
|
||||||
import org.apache.solr.client.solrj.response.QueryResponse;
|
import org.apache.solr.client.solrj.response.QueryResponse;
|
||||||
import org.apache.solr.common.SolrDocument;
|
import org.apache.solr.common.SolrDocument;
|
||||||
|
@ -111,11 +112,16 @@ public class SolrEntityProcessor extends EntityProcessorBase {
|
||||||
// (wt="javabin|xml") default is javabin
|
// (wt="javabin|xml") default is javabin
|
||||||
if ("xml".equals(context.getResolvedEntityAttribute(CommonParams.WT))) {
|
if ("xml".equals(context.getResolvedEntityAttribute(CommonParams.WT))) {
|
||||||
// TODO: it doesn't matter for this impl when passing a client currently, but we should close this!
|
// TODO: it doesn't matter for this impl when passing a client currently, but we should close this!
|
||||||
solrClient = new HttpSolrClient(url.toExternalForm(), client, new XMLResponseParser());
|
solrClient = new Builder(url.toExternalForm())
|
||||||
|
.withHttpClient(client)
|
||||||
|
.withResponseParser(new XMLResponseParser())
|
||||||
|
.build();
|
||||||
LOG.info("using XMLResponseParser");
|
LOG.info("using XMLResponseParser");
|
||||||
} else {
|
} else {
|
||||||
// TODO: it doesn't matter for this impl when passing a client currently, but we should close this!
|
// TODO: it doesn't matter for this impl when passing a client currently, but we should close this!
|
||||||
solrClient = new HttpSolrClient(url.toExternalForm(), client);
|
solrClient = new Builder(url.toExternalForm())
|
||||||
|
.withHttpClient(client)
|
||||||
|
.build();
|
||||||
LOG.info("using BinaryResponseParser");
|
LOG.info("using BinaryResponseParser");
|
||||||
}
|
}
|
||||||
} catch (MalformedURLException e) {
|
} catch (MalformedURLException e) {
|
||||||
|
|
|
@ -69,7 +69,7 @@ public class TestContentStreamDataSource extends AbstractDataImportHandlerTestCa
|
||||||
params.set("command", "full-import");
|
params.set("command", "full-import");
|
||||||
params.set("clean", "false");
|
params.set("clean", "false");
|
||||||
req.setParams(params);
|
req.setParams(params);
|
||||||
try (HttpSolrClient solrClient = new HttpSolrClient(buildUrl(jetty.getLocalPort(), "/solr/collection1"))) {
|
try (HttpSolrClient solrClient = getHttpSolrClient(buildUrl(jetty.getLocalPort(), "/solr/collection1"))) {
|
||||||
solrClient.request(req);
|
solrClient.request(req);
|
||||||
ModifiableSolrParams qparams = new ModifiableSolrParams();
|
ModifiableSolrParams qparams = new ModifiableSolrParams();
|
||||||
qparams.add("q", "*:*");
|
qparams.add("q", "*:*");
|
||||||
|
@ -89,7 +89,7 @@ public class TestContentStreamDataSource extends AbstractDataImportHandlerTestCa
|
||||||
"clean", "false", UpdateParams.COMMIT, "false",
|
"clean", "false", UpdateParams.COMMIT, "false",
|
||||||
UpdateParams.COMMIT_WITHIN, "1000");
|
UpdateParams.COMMIT_WITHIN, "1000");
|
||||||
req.setParams(params);
|
req.setParams(params);
|
||||||
try (HttpSolrClient solrServer = new HttpSolrClient(buildUrl(jetty.getLocalPort(), "/solr/collection1"))) {
|
try (HttpSolrClient solrServer = getHttpSolrClient(buildUrl(jetty.getLocalPort(), "/solr/collection1"))) {
|
||||||
solrServer.request(req);
|
solrServer.request(req);
|
||||||
Thread.sleep(100);
|
Thread.sleep(100);
|
||||||
ModifiableSolrParams queryAll = params("q", "*");
|
ModifiableSolrParams queryAll = params("q", "*");
|
||||||
|
|
|
@ -282,7 +282,7 @@ public class TestSolrEntityProcessorEndToEnd extends AbstractDataImportHandlerTe
|
||||||
sidl.add(sd);
|
sidl.add(sd);
|
||||||
}
|
}
|
||||||
|
|
||||||
try (HttpSolrClient solrServer = new HttpSolrClient(getSourceUrl())) {
|
try (HttpSolrClient solrServer = getHttpSolrClient(getSourceUrl())) {
|
||||||
solrServer.setConnectionTimeout(15000);
|
solrServer.setConnectionTimeout(15000);
|
||||||
solrServer.setSoTimeout(30000);
|
solrServer.setSoTimeout(30000);
|
||||||
solrServer.add(sidl);
|
solrServer.add(sidl);
|
||||||
|
|
|
@ -90,7 +90,7 @@ class GoLive {
|
||||||
Callable<Request> task = () -> {
|
Callable<Request> task = () -> {
|
||||||
Request req = new Request();
|
Request req = new Request();
|
||||||
LOG.info("Live merge " + dir.getPath() + " into " + mergeUrl);
|
LOG.info("Live merge " + dir.getPath() + " into " + mergeUrl);
|
||||||
try (final HttpSolrClient client = new HttpSolrClient(mergeUrl)) {
|
try (final HttpSolrClient client = new HttpSolrClient.Builder(mergeUrl).build()) {
|
||||||
CoreAdminRequest.MergeIndexes mergeRequest = new CoreAdminRequest.MergeIndexes();
|
CoreAdminRequest.MergeIndexes mergeRequest = new CoreAdminRequest.MergeIndexes();
|
||||||
mergeRequest.setCoreName(name);
|
mergeRequest.setCoreName(name);
|
||||||
mergeRequest.setIndexDirs(Arrays.asList(dir.getPath().toString() + "/data/index"));
|
mergeRequest.setIndexDirs(Arrays.asList(dir.getPath().toString() + "/data/index"));
|
||||||
|
@ -138,7 +138,7 @@ class GoLive {
|
||||||
try {
|
try {
|
||||||
LOG.info("Committing live merge...");
|
LOG.info("Committing live merge...");
|
||||||
if (options.zkHost != null) {
|
if (options.zkHost != null) {
|
||||||
try (CloudSolrClient server = new CloudSolrClient(options.zkHost)) {
|
try (CloudSolrClient server = new CloudSolrClient.Builder().withZkHost(options.zkHost).build()) {
|
||||||
server.setDefaultCollection(options.collection);
|
server.setDefaultCollection(options.collection);
|
||||||
server.commit();
|
server.commit();
|
||||||
}
|
}
|
||||||
|
@ -146,7 +146,7 @@ class GoLive {
|
||||||
for (List<String> urls : options.shardUrls) {
|
for (List<String> urls : options.shardUrls) {
|
||||||
for (String url : urls) {
|
for (String url : urls) {
|
||||||
// TODO: we should do these concurrently
|
// TODO: we should do these concurrently
|
||||||
try (HttpSolrClient server = new HttpSolrClient(url)) {
|
try (HttpSolrClient server = new HttpSolrClient.Builder(url).build()) {
|
||||||
server.commit();
|
server.commit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -380,7 +380,7 @@ public class MorphlineGoLiveMiniMRTest extends AbstractFullDistribZkTestBase {
|
||||||
String[] args = new String[]{};
|
String[] args = new String[]{};
|
||||||
List<String> argList = new ArrayList<>();
|
List<String> argList = new ArrayList<>();
|
||||||
|
|
||||||
try (HttpSolrClient server = new HttpSolrClient(cloudJettys.get(0).url)) {
|
try (HttpSolrClient server = getHttpSolrClient(cloudJettys.get(0).url)) {
|
||||||
|
|
||||||
args = new String[]{
|
args = new String[]{
|
||||||
"--solr-home-dir=" + MINIMR_CONF_DIR.getAbsolutePath(),
|
"--solr-home-dir=" + MINIMR_CONF_DIR.getAbsolutePath(),
|
||||||
|
@ -706,7 +706,7 @@ public class MorphlineGoLiveMiniMRTest extends AbstractFullDistribZkTestBase {
|
||||||
Collection<Replica> replicas = slice.getReplicas();
|
Collection<Replica> replicas = slice.getReplicas();
|
||||||
long found = -1;
|
long found = -1;
|
||||||
for (Replica replica : replicas) {
|
for (Replica replica : replicas) {
|
||||||
try (HttpSolrClient client = new HttpSolrClient(new ZkCoreNodeProps(replica).getCoreUrl())) {
|
try (HttpSolrClient client = getHttpSolrClient(new ZkCoreNodeProps(replica).getCoreUrl())) {
|
||||||
SolrQuery query = new SolrQuery("*:*");
|
SolrQuery query = new SolrQuery("*:*");
|
||||||
query.set("distrib", false);
|
query.set("distrib", false);
|
||||||
QueryResponse replicaResults = client.query(query);
|
QueryResponse replicaResults = client.query(query);
|
||||||
|
|
|
@ -39,7 +39,7 @@ final class SafeConcurrentUpdateSolrClient extends ConcurrentUpdateSolrClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
public SafeConcurrentUpdateSolrClient(String solrServerUrl, HttpClient client, int queueSize, int threadCount) {
|
public SafeConcurrentUpdateSolrClient(String solrServerUrl, HttpClient client, int queueSize, int threadCount) {
|
||||||
super(solrServerUrl, client, queueSize, threadCount);
|
super(solrServerUrl, client, queueSize, threadCount, null, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -30,6 +30,7 @@ import com.typesafe.config.ConfigRenderOptions;
|
||||||
import com.typesafe.config.ConfigUtil;
|
import com.typesafe.config.ConfigUtil;
|
||||||
import org.apache.solr.client.solrj.SolrClient;
|
import org.apache.solr.client.solrj.SolrClient;
|
||||||
import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
||||||
|
import org.apache.solr.client.solrj.impl.CloudSolrClient.Builder;
|
||||||
import org.apache.solr.common.cloud.SolrZkClient;
|
import org.apache.solr.common.cloud.SolrZkClient;
|
||||||
import org.apache.solr.core.SolrConfig;
|
import org.apache.solr.core.SolrConfig;
|
||||||
import org.apache.solr.core.SolrResourceLoader;
|
import org.apache.solr.core.SolrResourceLoader;
|
||||||
|
@ -92,7 +93,9 @@ public class SolrLocator {
|
||||||
if (collectionName == null || collectionName.length() == 0) {
|
if (collectionName == null || collectionName.length() == 0) {
|
||||||
throw new MorphlineCompilationException("Parameter 'zkHost' requires that you also pass parameter 'collection'", config);
|
throw new MorphlineCompilationException("Parameter 'zkHost' requires that you also pass parameter 'collection'", config);
|
||||||
}
|
}
|
||||||
CloudSolrClient cloudSolrClient = new CloudSolrClient(zkHost);
|
CloudSolrClient cloudSolrClient = new Builder()
|
||||||
|
.withZkHost(zkHost)
|
||||||
|
.build();
|
||||||
cloudSolrClient.setDefaultCollection(collectionName);
|
cloudSolrClient.setDefaultCollection(collectionName);
|
||||||
cloudSolrClient.connect();
|
cloudSolrClient.connect();
|
||||||
return new SolrClientDocumentLoader(cloudSolrClient, batchSize);
|
return new SolrClientDocumentLoader(cloudSolrClient, batchSize);
|
||||||
|
|
|
@ -16,6 +16,22 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.solr.morphlines.solr;
|
package org.apache.solr.morphlines.solr;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.lang.invoke.MethodHandles;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.TimeZone;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import com.codahale.metrics.MetricRegistry;
|
import com.codahale.metrics.MetricRegistry;
|
||||||
import com.google.common.base.Joiner;
|
import com.google.common.base.Joiner;
|
||||||
import com.google.common.io.Files;
|
import com.google.common.io.Files;
|
||||||
|
@ -46,22 +62,6 @@ import org.kitesdk.morphline.stdlib.PipeBuilder;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.lang.invoke.MethodHandles;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.TimeZone;
|
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
|
||||||
|
|
||||||
public class AbstractSolrMorphlineTestBase extends SolrTestCaseJ4 {
|
public class AbstractSolrMorphlineTestBase extends SolrTestCaseJ4 {
|
||||||
private static Locale savedLocale;
|
private static Locale savedLocale;
|
||||||
protected Collector collector;
|
protected Collector collector;
|
||||||
|
@ -123,7 +123,7 @@ public class AbstractSolrMorphlineTestBase extends SolrTestCaseJ4 {
|
||||||
if (EXTERNAL_SOLR_SERVER_URL != null) {
|
if (EXTERNAL_SOLR_SERVER_URL != null) {
|
||||||
//solrServer = new ConcurrentUpdateSolrServer(EXTERNAL_SOLR_SERVER_URL, 2, 2);
|
//solrServer = new ConcurrentUpdateSolrServer(EXTERNAL_SOLR_SERVER_URL, 2, 2);
|
||||||
//solrServer = new SafeConcurrentUpdateSolrServer(EXTERNAL_SOLR_SERVER_URL, 2, 2);
|
//solrServer = new SafeConcurrentUpdateSolrServer(EXTERNAL_SOLR_SERVER_URL, 2, 2);
|
||||||
solrClient = new HttpSolrClient(EXTERNAL_SOLR_SERVER_URL);
|
solrClient = getHttpSolrClient(EXTERNAL_SOLR_SERVER_URL);
|
||||||
((HttpSolrClient) solrClient).setParser(new XMLResponseParser());
|
((HttpSolrClient) solrClient).setParser(new XMLResponseParser());
|
||||||
} else {
|
} else {
|
||||||
if (TEST_WITH_EMBEDDED_SOLR_SERVER) {
|
if (TEST_WITH_EMBEDDED_SOLR_SERVER) {
|
||||||
|
|
|
@ -201,7 +201,7 @@ public class LeaderInitiatedRecoveryThread extends Thread {
|
||||||
log.info("Asking core={} coreNodeName={} on " + recoveryUrl + " to recover", coreNeedingRecovery, replicaCoreNodeName);
|
log.info("Asking core={} coreNodeName={} on " + recoveryUrl + " to recover", coreNeedingRecovery, replicaCoreNodeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
try (HttpSolrClient client = new HttpSolrClient(recoveryUrl)) {
|
try (HttpSolrClient client = new HttpSolrClient.Builder(recoveryUrl).build()) {
|
||||||
client.setSoTimeout(60000);
|
client.setSoTimeout(60000);
|
||||||
client.setConnectionTimeout(15000);
|
client.setConnectionTimeout(15000);
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -16,9 +16,22 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.solr.cloud;
|
package org.apache.solr.cloud;
|
||||||
|
|
||||||
|
import java.io.Closeable;
|
||||||
|
import java.lang.invoke.MethodHandles;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.TreeMap;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import com.google.common.cache.Cache;
|
import com.google.common.cache.Cache;
|
||||||
import com.google.common.cache.CacheBuilder;
|
import com.google.common.cache.CacheBuilder;
|
||||||
|
|
||||||
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
||||||
import org.apache.solr.client.solrj.request.CoreAdminRequest.Create;
|
import org.apache.solr.client.solrj.request.CoreAdminRequest.Create;
|
||||||
import org.apache.solr.common.SolrException;
|
import org.apache.solr.common.SolrException;
|
||||||
|
@ -34,21 +47,6 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.slf4j.MDC;
|
import org.slf4j.MDC;
|
||||||
|
|
||||||
import java.io.Closeable;
|
|
||||||
import java.lang.invoke.MethodHandles;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.TreeMap;
|
|
||||||
import java.util.concurrent.Callable;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
|
|
||||||
// TODO: how to tmp exclude nodes?
|
// TODO: how to tmp exclude nodes?
|
||||||
|
|
||||||
|
@ -434,7 +432,7 @@ public class OverseerAutoReplicaFailoverThread implements Runnable, Closeable {
|
||||||
final String createUrl, final String dataDir, final String ulogDir,
|
final String createUrl, final String dataDir, final String ulogDir,
|
||||||
final String coreNodeName, final String coreName) {
|
final String coreNodeName, final String coreName) {
|
||||||
|
|
||||||
try (HttpSolrClient client = new HttpSolrClient(createUrl)) {
|
try (HttpSolrClient client = new HttpSolrClient.Builder(createUrl).build()) {
|
||||||
log.debug("create url={}", createUrl);
|
log.debug("create url={}", createUrl);
|
||||||
client.setConnectionTimeout(30000);
|
client.setConnectionTimeout(30000);
|
||||||
client.setSoTimeout(60000);
|
client.setSoTimeout(60000);
|
||||||
|
|
|
@ -1315,7 +1315,7 @@ public class OverseerCollectionMessageHandler implements OverseerMessageHandler
|
||||||
|
|
||||||
static UpdateResponse softCommit(String url) throws SolrServerException, IOException {
|
static UpdateResponse softCommit(String url) throws SolrServerException, IOException {
|
||||||
|
|
||||||
try (HttpSolrClient client = new HttpSolrClient(url)) {
|
try (HttpSolrClient client = new HttpSolrClient.Builder(url).build()) {
|
||||||
client.setConnectionTimeout(30000);
|
client.setConnectionTimeout(30000);
|
||||||
client.setSoTimeout(120000);
|
client.setSoTimeout(120000);
|
||||||
UpdateRequest ureq = new UpdateRequest();
|
UpdateRequest ureq = new UpdateRequest();
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
package org.apache.solr.cloud;
|
package org.apache.solr.cloud;
|
||||||
|
|
||||||
import java.io.Closeable;
|
import java.io.Closeable;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.invoke.MethodHandles;
|
import java.lang.invoke.MethodHandles;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -195,7 +194,7 @@ public class RecoveryStrategy extends Thread implements Closeable {
|
||||||
|
|
||||||
private void commitOnLeader(String leaderUrl) throws SolrServerException,
|
private void commitOnLeader(String leaderUrl) throws SolrServerException,
|
||||||
IOException {
|
IOException {
|
||||||
try (HttpSolrClient client = new HttpSolrClient(leaderUrl)) {
|
try (HttpSolrClient client = new HttpSolrClient.Builder(leaderUrl).build()) {
|
||||||
client.setConnectionTimeout(30000);
|
client.setConnectionTimeout(30000);
|
||||||
UpdateRequest ureq = new UpdateRequest();
|
UpdateRequest ureq = new UpdateRequest();
|
||||||
ureq.setParams(new ModifiableSolrParams());
|
ureq.setParams(new ModifiableSolrParams());
|
||||||
|
@ -575,7 +574,7 @@ public class RecoveryStrategy extends Thread implements Closeable {
|
||||||
private void sendPrepRecoveryCmd(String leaderBaseUrl, String leaderCoreName, Slice slice)
|
private void sendPrepRecoveryCmd(String leaderBaseUrl, String leaderCoreName, Slice slice)
|
||||||
throws SolrServerException, IOException, InterruptedException, ExecutionException {
|
throws SolrServerException, IOException, InterruptedException, ExecutionException {
|
||||||
|
|
||||||
try (HttpSolrClient client = new HttpSolrClient(leaderBaseUrl)) {
|
try (HttpSolrClient client = new HttpSolrClient.Builder(leaderBaseUrl).build()) {
|
||||||
client.setConnectionTimeout(30000);
|
client.setConnectionTimeout(30000);
|
||||||
WaitForState prepCmd = new WaitForState();
|
WaitForState prepCmd = new WaitForState();
|
||||||
prepCmd.setCoreName(leaderCoreName);
|
prepCmd.setCoreName(leaderCoreName);
|
||||||
|
|
|
@ -292,7 +292,7 @@ public class SyncStrategy {
|
||||||
recoverRequestCmd.setAction(CoreAdminAction.REQUESTRECOVERY);
|
recoverRequestCmd.setAction(CoreAdminAction.REQUESTRECOVERY);
|
||||||
recoverRequestCmd.setCoreName(coreName);
|
recoverRequestCmd.setCoreName(coreName);
|
||||||
|
|
||||||
try (HttpSolrClient client = new HttpSolrClient(baseUrl, SyncStrategy.this.client)) {
|
try (HttpSolrClient client = new HttpSolrClient.Builder(baseUrl).withHttpClient(SyncStrategy.this.client).build()) {
|
||||||
client.setConnectionTimeout(30000);
|
client.setConnectionTimeout(30000);
|
||||||
client.setSoTimeout(120000);
|
client.setSoTimeout(120000);
|
||||||
client.request(recoverRequestCmd);
|
client.request(recoverRequestCmd);
|
||||||
|
|
|
@ -35,6 +35,7 @@ import java.util.concurrent.TimeoutException;
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
||||||
|
import org.apache.solr.client.solrj.impl.HttpSolrClient.Builder;
|
||||||
import org.apache.solr.client.solrj.request.CoreAdminRequest.WaitForState;
|
import org.apache.solr.client.solrj.request.CoreAdminRequest.WaitForState;
|
||||||
import org.apache.solr.cloud.overseer.OverseerAction;
|
import org.apache.solr.cloud.overseer.OverseerAction;
|
||||||
import org.apache.solr.cloud.overseer.SliceMutator;
|
import org.apache.solr.cloud.overseer.SliceMutator;
|
||||||
|
@ -1574,7 +1575,7 @@ public final class ZkController {
|
||||||
log.info("Replica " + myCoreNodeName +
|
log.info("Replica " + myCoreNodeName +
|
||||||
" NOT in leader-initiated recovery, need to wait for leader to see down state.");
|
" NOT in leader-initiated recovery, need to wait for leader to see down state.");
|
||||||
|
|
||||||
try (HttpSolrClient client = new HttpSolrClient(leaderBaseUrl)) {
|
try (HttpSolrClient client = new Builder(leaderBaseUrl).build()) {
|
||||||
client.setConnectionTimeout(15000);
|
client.setConnectionTimeout(15000);
|
||||||
client.setSoTimeout(120000);
|
client.setSoTimeout(120000);
|
||||||
WaitForState prepCmd = new WaitForState();
|
WaitForState prepCmd = new WaitForState();
|
||||||
|
|
|
@ -105,7 +105,8 @@ public class SnitchContext implements RemoteCallback {
|
||||||
public SimpleSolrResponse invoke(UpdateShardHandler shardHandler, final String url, String path, SolrParams params)
|
public SimpleSolrResponse invoke(UpdateShardHandler shardHandler, final String url, String path, SolrParams params)
|
||||||
throws IOException, SolrServerException {
|
throws IOException, SolrServerException {
|
||||||
GenericSolrRequest request = new GenericSolrRequest(SolrRequest.METHOD.GET, path, params);
|
GenericSolrRequest request = new GenericSolrRequest(SolrRequest.METHOD.GET, path, params);
|
||||||
try (HttpSolrClient client = new HttpSolrClient(url, shardHandler.getHttpClient(), new BinaryResponseParser())) {
|
try (HttpSolrClient client = new HttpSolrClient.Builder(url).withHttpClient(shardHandler.getHttpClient())
|
||||||
|
.withResponseParser(new BinaryResponseParser()).build()) {
|
||||||
NamedList<Object> rsp = client.request(request);
|
NamedList<Object> rsp = client.request(request);
|
||||||
request.response.nl = rsp;
|
request.response.nl = rsp;
|
||||||
return request.response;
|
return request.response;
|
||||||
|
|
|
@ -16,9 +16,16 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.solr.handler;
|
package org.apache.solr.handler;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.lang.invoke.MethodHandles;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.solr.client.solrj.SolrRequest;
|
import org.apache.solr.client.solrj.SolrRequest;
|
||||||
import org.apache.solr.client.solrj.SolrServerException;
|
import org.apache.solr.client.solrj.SolrServerException;
|
||||||
import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
||||||
|
import org.apache.solr.client.solrj.impl.CloudSolrClient.Builder;
|
||||||
import org.apache.solr.client.solrj.request.QueryRequest;
|
import org.apache.solr.client.solrj.request.QueryRequest;
|
||||||
import org.apache.solr.common.SolrException;
|
import org.apache.solr.common.SolrException;
|
||||||
import org.apache.solr.common.params.CommonParams;
|
import org.apache.solr.common.params.CommonParams;
|
||||||
|
@ -30,12 +37,6 @@ import org.apache.solr.update.CdcrUpdateLog;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.lang.invoke.MethodHandles;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
class CdcrReplicatorManager implements CdcrStateManager.CdcrStateObserver {
|
class CdcrReplicatorManager implements CdcrStateManager.CdcrStateObserver {
|
||||||
|
|
||||||
private List<CdcrReplicatorState> replicatorStates;
|
private List<CdcrReplicatorState> replicatorStates;
|
||||||
|
@ -64,7 +65,10 @@ class CdcrReplicatorManager implements CdcrStateManager.CdcrStateObserver {
|
||||||
String zkHost = params.get(CdcrParams.ZK_HOST_PARAM);
|
String zkHost = params.get(CdcrParams.ZK_HOST_PARAM);
|
||||||
String targetCollection = params.get(CdcrParams.TARGET_COLLECTION_PARAM);
|
String targetCollection = params.get(CdcrParams.TARGET_COLLECTION_PARAM);
|
||||||
|
|
||||||
CloudSolrClient client = new CloudSolrClient(zkHost, true);
|
CloudSolrClient client = new Builder()
|
||||||
|
.withZkHost(zkHost)
|
||||||
|
.sendUpdatesOnlyToShardLeaders()
|
||||||
|
.build();
|
||||||
client.setDefaultCollection(targetCollection);
|
client.setDefaultCollection(targetCollection);
|
||||||
replicatorStates.add(new CdcrReplicatorState(targetCollection, zkHost, client));
|
replicatorStates.add(new CdcrReplicatorState(targetCollection, zkHost, client));
|
||||||
}
|
}
|
||||||
|
|
|
@ -595,7 +595,7 @@ public class CdcrRequestHandler extends RequestHandlerBase implements SolrCoreAw
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long call() throws Exception {
|
public Long call() throws Exception {
|
||||||
try (HttpSolrClient server = new HttpSolrClient(baseUrl)) {
|
try (HttpSolrClient server = new HttpSolrClient.Builder(baseUrl).build()) {
|
||||||
server.setConnectionTimeout(15000);
|
server.setConnectionTimeout(15000);
|
||||||
server.setSoTimeout(60000);
|
server.setSoTimeout(60000);
|
||||||
|
|
||||||
|
|
|
@ -129,7 +129,7 @@ class CdcrUpdateLogSynchronizer implements CdcrStateManager.CdcrStateObserver {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpSolrClient server = new HttpSolrClient(leaderUrl);
|
HttpSolrClient server = new HttpSolrClient.Builder(leaderUrl).build();
|
||||||
server.setConnectionTimeout(15000);
|
server.setConnectionTimeout(15000);
|
||||||
server.setSoTimeout(60000);
|
server.setSoTimeout(60000);
|
||||||
|
|
||||||
|
|
|
@ -218,7 +218,7 @@ public class IndexFetcher {
|
||||||
QueryRequest req = new QueryRequest(params);
|
QueryRequest req = new QueryRequest(params);
|
||||||
|
|
||||||
// TODO modify to use shardhandler
|
// TODO modify to use shardhandler
|
||||||
try (HttpSolrClient client = new HttpSolrClient(masterUrl, myHttpClient)) {
|
try (HttpSolrClient client = new HttpSolrClient.Builder(masterUrl).withHttpClient(myHttpClient).build()) {
|
||||||
client.setSoTimeout(60000);
|
client.setSoTimeout(60000);
|
||||||
client.setConnectionTimeout(15000);
|
client.setConnectionTimeout(15000);
|
||||||
|
|
||||||
|
@ -240,7 +240,7 @@ public class IndexFetcher {
|
||||||
QueryRequest req = new QueryRequest(params);
|
QueryRequest req = new QueryRequest(params);
|
||||||
|
|
||||||
// TODO modify to use shardhandler
|
// TODO modify to use shardhandler
|
||||||
try (HttpSolrClient client = new HttpSolrClient(masterUrl, myHttpClient)) {
|
try (HttpSolrClient client = new HttpSolrClient.Builder(masterUrl).withHttpClient(myHttpClient).build()) {
|
||||||
client.setSoTimeout(60000);
|
client.setSoTimeout(60000);
|
||||||
client.setConnectionTimeout(15000);
|
client.setConnectionTimeout(15000);
|
||||||
NamedList response = client.request(req);
|
NamedList response = client.request(req);
|
||||||
|
@ -1606,7 +1606,11 @@ public class IndexFetcher {
|
||||||
InputStream is = null;
|
InputStream is = null;
|
||||||
|
|
||||||
// TODO use shardhandler
|
// TODO use shardhandler
|
||||||
try (HttpSolrClient client = new HttpSolrClient(masterUrl, myHttpClient, null)) {
|
try (HttpSolrClient client = new HttpSolrClient.Builder(masterUrl)
|
||||||
|
.withHttpClient(myHttpClient)
|
||||||
|
.withResponseParser(null)
|
||||||
|
.build()
|
||||||
|
) {
|
||||||
client.setSoTimeout(60000);
|
client.setSoTimeout(60000);
|
||||||
client.setConnectionTimeout(15000);
|
client.setConnectionTimeout(15000);
|
||||||
QueryRequest req = new QueryRequest(params);
|
QueryRequest req = new QueryRequest(params);
|
||||||
|
@ -1715,7 +1719,7 @@ public class IndexFetcher {
|
||||||
params.set(CommonParams.QT, "/replication");
|
params.set(CommonParams.QT, "/replication");
|
||||||
|
|
||||||
// TODO use shardhandler
|
// TODO use shardhandler
|
||||||
try (HttpSolrClient client = new HttpSolrClient(masterUrl, myHttpClient)) {
|
try (HttpSolrClient client = new HttpSolrClient.Builder(masterUrl).withHttpClient(myHttpClient).build()) {
|
||||||
client.setSoTimeout(60000);
|
client.setSoTimeout(60000);
|
||||||
client.setConnectionTimeout(15000);
|
client.setConnectionTimeout(15000);
|
||||||
QueryRequest request = new QueryRequest(params);
|
QueryRequest request = new QueryRequest(params);
|
||||||
|
|
|
@ -69,7 +69,6 @@ import org.apache.solr.response.SolrQueryResponse;
|
||||||
import org.apache.solr.schema.SchemaManager;
|
import org.apache.solr.schema.SchemaManager;
|
||||||
import org.apache.solr.security.AuthorizationContext;
|
import org.apache.solr.security.AuthorizationContext;
|
||||||
import org.apache.solr.security.PermissionNameProvider;
|
import org.apache.solr.security.PermissionNameProvider;
|
||||||
import org.apache.solr.security.PermissionNameProvider.Name;
|
|
||||||
import org.apache.solr.util.CommandOperation;
|
import org.apache.solr.util.CommandOperation;
|
||||||
import org.apache.solr.util.DefaultSolrThreadFactory;
|
import org.apache.solr.util.DefaultSolrThreadFactory;
|
||||||
import org.apache.solr.util.RTimer;
|
import org.apache.solr.util.RTimer;
|
||||||
|
@ -785,7 +784,7 @@ public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAwa
|
||||||
public Boolean call() throws Exception {
|
public Boolean call() throws Exception {
|
||||||
final RTimer timer = new RTimer();
|
final RTimer timer = new RTimer();
|
||||||
int attempts = 0;
|
int attempts = 0;
|
||||||
try (HttpSolrClient solr = new HttpSolrClient(coreUrl)) {
|
try (HttpSolrClient solr = new HttpSolrClient.Builder(coreUrl).build()) {
|
||||||
// eventually, this loop will get killed by the ExecutorService's timeout
|
// eventually, this loop will get killed by the ExecutorService's timeout
|
||||||
while (true) {
|
while (true) {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -35,6 +35,7 @@ import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.solr.client.solrj.SolrResponse;
|
import org.apache.solr.client.solrj.SolrResponse;
|
||||||
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
||||||
|
import org.apache.solr.client.solrj.impl.HttpSolrClient.Builder;
|
||||||
import org.apache.solr.client.solrj.request.CoreAdminRequest;
|
import org.apache.solr.client.solrj.request.CoreAdminRequest;
|
||||||
import org.apache.solr.client.solrj.request.CoreAdminRequest.RequestSyncShard;
|
import org.apache.solr.client.solrj.request.CoreAdminRequest.RequestSyncShard;
|
||||||
import org.apache.solr.client.solrj.response.RequestStatusState;
|
import org.apache.solr.client.solrj.response.RequestStatusState;
|
||||||
|
@ -427,7 +428,7 @@ public class CollectionsHandler extends RequestHandlerBase implements Permission
|
||||||
ZkNodeProps leaderProps = clusterState.getLeader(collection, shard);
|
ZkNodeProps leaderProps = clusterState.getLeader(collection, shard);
|
||||||
ZkCoreNodeProps nodeProps = new ZkCoreNodeProps(leaderProps);
|
ZkCoreNodeProps nodeProps = new ZkCoreNodeProps(leaderProps);
|
||||||
|
|
||||||
try (HttpSolrClient client = new HttpSolrClient(nodeProps.getBaseUrl())) {
|
try (HttpSolrClient client = new Builder(nodeProps.getBaseUrl()).build()) {
|
||||||
client.setConnectionTimeout(15000);
|
client.setConnectionTimeout(15000);
|
||||||
client.setSoTimeout(60000);
|
client.setSoTimeout(60000);
|
||||||
RequestSyncShard reqSyncShard = new CoreAdminRequest.RequestSyncShard();
|
RequestSyncShard reqSyncShard = new CoreAdminRequest.RequestSyncShard();
|
||||||
|
|
|
@ -35,7 +35,7 @@ import org.apache.http.client.HttpClient;
|
||||||
import org.apache.solr.client.solrj.SolrClient;
|
import org.apache.solr.client.solrj.SolrClient;
|
||||||
import org.apache.solr.client.solrj.SolrRequest;
|
import org.apache.solr.client.solrj.SolrRequest;
|
||||||
import org.apache.solr.client.solrj.SolrResponse;
|
import org.apache.solr.client.solrj.SolrResponse;
|
||||||
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
import org.apache.solr.client.solrj.impl.HttpSolrClient.Builder;
|
||||||
import org.apache.solr.client.solrj.impl.LBHttpSolrClient;
|
import org.apache.solr.client.solrj.impl.LBHttpSolrClient;
|
||||||
import org.apache.solr.client.solrj.request.QueryRequest;
|
import org.apache.solr.client.solrj.request.QueryRequest;
|
||||||
import org.apache.solr.client.solrj.util.ClientUtils;
|
import org.apache.solr.client.solrj.util.ClientUtils;
|
||||||
|
@ -54,7 +54,6 @@ import org.apache.solr.common.params.SolrParams;
|
||||||
import org.apache.solr.common.util.NamedList;
|
import org.apache.solr.common.util.NamedList;
|
||||||
import org.apache.solr.common.util.StrUtils;
|
import org.apache.solr.common.util.StrUtils;
|
||||||
import org.apache.solr.core.CoreDescriptor;
|
import org.apache.solr.core.CoreDescriptor;
|
||||||
import org.apache.solr.core.SolrCore;
|
|
||||||
import org.apache.solr.request.SolrQueryRequest;
|
import org.apache.solr.request.SolrQueryRequest;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
@ -192,7 +191,7 @@ public class HttpShardHandler extends ShardHandler {
|
||||||
if (urls.size() <= 1) {
|
if (urls.size() <= 1) {
|
||||||
String url = urls.get(0);
|
String url = urls.get(0);
|
||||||
srsp.setShardAddress(url);
|
srsp.setShardAddress(url);
|
||||||
try (SolrClient client = new HttpSolrClient(url, httpClient)) {
|
try (SolrClient client = new Builder(url).withHttpClient(httpClient).build()) {
|
||||||
ssr.nl = client.request(req);
|
ssr.nl = client.request(req);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -23,6 +23,7 @@ import org.apache.solr.client.solrj.SolrServerException;
|
||||||
import org.apache.solr.client.solrj.impl.HttpClientConfigurer;
|
import org.apache.solr.client.solrj.impl.HttpClientConfigurer;
|
||||||
import org.apache.solr.client.solrj.impl.HttpClientUtil;
|
import org.apache.solr.client.solrj.impl.HttpClientUtil;
|
||||||
import org.apache.solr.client.solrj.impl.LBHttpSolrClient;
|
import org.apache.solr.client.solrj.impl.LBHttpSolrClient;
|
||||||
|
import org.apache.solr.client.solrj.impl.LBHttpSolrClient.Builder;
|
||||||
import org.apache.solr.client.solrj.request.QueryRequest;
|
import org.apache.solr.client.solrj.request.QueryRequest;
|
||||||
import org.apache.solr.common.params.ModifiableSolrParams;
|
import org.apache.solr.common.params.ModifiableSolrParams;
|
||||||
import org.apache.solr.common.util.ExecutorUtil;
|
import org.apache.solr.common.util.ExecutorUtil;
|
||||||
|
@ -202,7 +203,10 @@ public class HttpShardHandlerFactory extends ShardHandlerFactory implements org.
|
||||||
}
|
}
|
||||||
|
|
||||||
protected LBHttpSolrClient createLoadbalancer(HttpClient httpClient){
|
protected LBHttpSolrClient createLoadbalancer(HttpClient httpClient){
|
||||||
return new LBHttpSolrClient(httpClient);
|
LBHttpSolrClient client = new Builder()
|
||||||
|
.withHttpClient(httpClient)
|
||||||
|
.build();
|
||||||
|
return client;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T> T getParameter(NamedList initArgs, String configKey, T defaultValue, StringBuilder sb) {
|
protected <T> T getParameter(NamedList initArgs, String configKey, T defaultValue, StringBuilder sb) {
|
||||||
|
|
|
@ -29,6 +29,7 @@ import org.apache.solr.client.solrj.SolrRequest;
|
||||||
import org.apache.solr.client.solrj.impl.HttpClientConfigurer;
|
import org.apache.solr.client.solrj.impl.HttpClientConfigurer;
|
||||||
import org.apache.solr.client.solrj.impl.HttpClientUtil;
|
import org.apache.solr.client.solrj.impl.HttpClientUtil;
|
||||||
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
||||||
|
import org.apache.solr.client.solrj.impl.HttpSolrClient.Builder;
|
||||||
import org.apache.solr.client.solrj.request.QueryRequest;
|
import org.apache.solr.client.solrj.request.QueryRequest;
|
||||||
import org.apache.solr.client.solrj.response.QueryResponse;
|
import org.apache.solr.client.solrj.response.QueryResponse;
|
||||||
import org.apache.solr.common.SolrDocumentList;
|
import org.apache.solr.common.SolrDocumentList;
|
||||||
|
@ -84,7 +85,9 @@ public abstract class IterativeMergeStrategy implements MergeStrategy {
|
||||||
|
|
||||||
public CallBack(ShardResponse originalShardResponse, QueryRequest req) {
|
public CallBack(ShardResponse originalShardResponse, QueryRequest req) {
|
||||||
|
|
||||||
this.solrClient = new HttpSolrClient(originalShardResponse.getShardAddress(), getHttpClient());
|
this.solrClient = new Builder(originalShardResponse.getShardAddress())
|
||||||
|
.withHttpClient(getHttpClient())
|
||||||
|
.build();
|
||||||
this.req = req;
|
this.req = req;
|
||||||
this.originalShardResponse = originalShardResponse;
|
this.originalShardResponse = originalShardResponse;
|
||||||
req.setMethod(SolrRequest.METHOD.POST);
|
req.setMethod(SolrRequest.METHOD.POST);
|
||||||
|
@ -132,4 +135,4 @@ public abstract class IterativeMergeStrategy implements MergeStrategy {
|
||||||
return httpClient;
|
return httpClient;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -326,7 +326,7 @@ public final class ManagedIndexSchema extends IndexSchema {
|
||||||
@Override
|
@Override
|
||||||
public Integer call() throws Exception {
|
public Integer call() throws Exception {
|
||||||
int remoteVersion = -1;
|
int remoteVersion = -1;
|
||||||
try (HttpSolrClient solr = new HttpSolrClient(coreUrl)) {
|
try (HttpSolrClient solr = new HttpSolrClient.Builder(coreUrl).build()) {
|
||||||
// eventually, this loop will get killed by the ExecutorService's timeout
|
// eventually, this loop will get killed by the ExecutorService's timeout
|
||||||
while (remoteVersion == -1 || remoteVersion < expectedZkVersion) {
|
while (remoteVersion == -1 || remoteVersion < expectedZkVersion) {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -44,7 +44,6 @@ import java.util.Collections;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.Callable;
|
|
||||||
import java.util.concurrent.CompletionService;
|
import java.util.concurrent.CompletionService;
|
||||||
import java.util.concurrent.ExecutorCompletionService;
|
import java.util.concurrent.ExecutorCompletionService;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
|
@ -260,7 +259,7 @@ public class SolrCmdDistributor {
|
||||||
if (req.synchronous) {
|
if (req.synchronous) {
|
||||||
blockAndDoRetries();
|
blockAndDoRetries();
|
||||||
|
|
||||||
try (HttpSolrClient client = new HttpSolrClient(req.node.getUrl(), clients.getHttpClient())) {
|
try (HttpSolrClient client = new HttpSolrClient.Builder(req.node.getUrl()).withHttpClient(clients.getHttpClient()).build()) {
|
||||||
client.request(req.uReq);
|
client.request(req.uReq);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new SolrException(ErrorCode.SERVER_ERROR, "Failed synchronous update on shard " + req.node + " update: " + req.uReq , e);
|
throw new SolrException(ErrorCode.SERVER_ERROR, "Failed synchronous update on shard " + req.node + " update: " + req.uReq , e);
|
||||||
|
|
|
@ -16,6 +16,16 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.solr.update;
|
package org.apache.solr.update;
|
||||||
|
|
||||||
|
import java.lang.invoke.MethodHandles;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
|
||||||
import org.apache.http.HttpResponse;
|
import org.apache.http.HttpResponse;
|
||||||
import org.apache.http.client.HttpClient;
|
import org.apache.http.client.HttpClient;
|
||||||
import org.apache.solr.client.solrj.SolrClient;
|
import org.apache.solr.client.solrj.SolrClient;
|
||||||
|
@ -29,16 +39,6 @@ import org.apache.solr.update.processor.DistributingUpdateProcessorFactory;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.lang.invoke.MethodHandles;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
|
|
||||||
public class StreamingSolrClients {
|
public class StreamingSolrClients {
|
||||||
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
|
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
|
||||||
|
|
||||||
|
@ -72,24 +72,7 @@ public class StreamingSolrClients {
|
||||||
// NOTE: increasing to more than 1 threadCount for the client could cause updates to be reordered
|
// NOTE: increasing to more than 1 threadCount for the client could cause updates to be reordered
|
||||||
// on a greater scale since the current behavior is to only increase the number of connections/Runners when
|
// on a greater scale since the current behavior is to only increase the number of connections/Runners when
|
||||||
// the queue is more than half full.
|
// the queue is more than half full.
|
||||||
client = new ConcurrentUpdateSolrClient(url, httpClient, 100, runnerCount, updateExecutor, true) {
|
client = new ErrorReportingConcurrentUpdateSolrClient(url, httpClient, 100, runnerCount, updateExecutor, true, req);
|
||||||
@Override
|
|
||||||
public void handleError(Throwable ex) {
|
|
||||||
req.trackRequestResult(null, false);
|
|
||||||
log.error("error", ex);
|
|
||||||
Error error = new Error();
|
|
||||||
error.e = (Exception) ex;
|
|
||||||
if (ex instanceof SolrException) {
|
|
||||||
error.statusCode = ((SolrException) ex).code();
|
|
||||||
}
|
|
||||||
error.req = req;
|
|
||||||
errors.add(error);
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public void onSuccess(HttpResponse resp) {
|
|
||||||
req.trackRequestResult(resp, true);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
client.setParser(new BinaryResponseParser());
|
client.setParser(new BinaryResponseParser());
|
||||||
client.setRequestWriter(new BinaryRequestWriter());
|
client.setRequestWriter(new BinaryRequestWriter());
|
||||||
client.setPollQueueTime(req.pollQueueTime);
|
client.setPollQueueTime(req.pollQueueTime);
|
||||||
|
@ -132,4 +115,31 @@ public class StreamingSolrClients {
|
||||||
public ExecutorService getUpdateExecutor() {
|
public ExecutorService getUpdateExecutor() {
|
||||||
return updateExecutor;
|
return updateExecutor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ErrorReportingConcurrentUpdateSolrClient extends ConcurrentUpdateSolrClient {
|
||||||
|
private final SolrCmdDistributor.Req req;
|
||||||
|
|
||||||
|
public ErrorReportingConcurrentUpdateSolrClient(String solrServerUrl, HttpClient client, int queueSize,
|
||||||
|
int threadCount, ExecutorService es, boolean streamDeletes, SolrCmdDistributor.Req req) {
|
||||||
|
super(solrServerUrl, client, queueSize, threadCount, es, streamDeletes);
|
||||||
|
this.req = req;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleError(Throwable ex) {
|
||||||
|
req.trackRequestResult(null, false);
|
||||||
|
log.error("error", ex);
|
||||||
|
Error error = new Error();
|
||||||
|
error.e = (Exception) ex;
|
||||||
|
if (ex instanceof SolrException) {
|
||||||
|
error.statusCode = ((SolrException) ex).code();
|
||||||
|
}
|
||||||
|
error.req = req;
|
||||||
|
errors.add(error);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onSuccess(HttpResponse resp) {
|
||||||
|
req.trackRequestResult(resp, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,6 +82,7 @@ import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
||||||
import org.apache.solr.client.solrj.impl.HttpClientConfigurer;
|
import org.apache.solr.client.solrj.impl.HttpClientConfigurer;
|
||||||
import org.apache.solr.client.solrj.impl.HttpClientUtil;
|
import org.apache.solr.client.solrj.impl.HttpClientUtil;
|
||||||
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
||||||
|
import org.apache.solr.client.solrj.impl.HttpSolrClient.Builder;
|
||||||
import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
|
import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
|
||||||
import org.apache.solr.client.solrj.response.QueryResponse;
|
import org.apache.solr.client.solrj.response.QueryResponse;
|
||||||
import org.apache.solr.common.SolrException;
|
import org.apache.solr.common.SolrException;
|
||||||
|
@ -210,7 +211,7 @@ public class SolrCLI {
|
||||||
String zkHost = cli.getOptionValue("zkHost", ZK_HOST);
|
String zkHost = cli.getOptionValue("zkHost", ZK_HOST);
|
||||||
|
|
||||||
log.debug("Connecting to Solr cluster: " + zkHost);
|
log.debug("Connecting to Solr cluster: " + zkHost);
|
||||||
try (CloudSolrClient cloudSolrClient = new CloudSolrClient(zkHost)) {
|
try (CloudSolrClient cloudSolrClient = new CloudSolrClient.Builder().withZkHost(zkHost).build()) {
|
||||||
|
|
||||||
String collection = cli.getOptionValue("collection");
|
String collection = cli.getOptionValue("collection");
|
||||||
if (collection != null)
|
if (collection != null)
|
||||||
|
@ -1163,7 +1164,7 @@ public class SolrCLI {
|
||||||
q = new SolrQuery("*:*");
|
q = new SolrQuery("*:*");
|
||||||
q.setRows(0);
|
q.setRows(0);
|
||||||
q.set("distrib", "false");
|
q.set("distrib", "false");
|
||||||
try (HttpSolrClient solr = new HttpSolrClient(coreUrl)) {
|
try (HttpSolrClient solr = new HttpSolrClient.Builder(coreUrl).build()) {
|
||||||
|
|
||||||
String solrUrl = solr.getBaseURL();
|
String solrUrl = solr.getBaseURL();
|
||||||
|
|
||||||
|
@ -1286,7 +1287,7 @@ public class SolrCLI {
|
||||||
if (zkHost == null)
|
if (zkHost == null)
|
||||||
throw new IllegalStateException("Must provide either the '-solrUrl' or '-zkHost' parameters!");
|
throw new IllegalStateException("Must provide either the '-solrUrl' or '-zkHost' parameters!");
|
||||||
|
|
||||||
try (CloudSolrClient cloudSolrClient = new CloudSolrClient(zkHost)) {
|
try (CloudSolrClient cloudSolrClient = new CloudSolrClient.Builder().withZkHost(zkHost).build()) {
|
||||||
cloudSolrClient.connect();
|
cloudSolrClient.connect();
|
||||||
Set<String> liveNodes = cloudSolrClient.getZkStateReader().getClusterState().getLiveNodes();
|
Set<String> liveNodes = cloudSolrClient.getZkStateReader().getClusterState().getLiveNodes();
|
||||||
if (liveNodes.isEmpty())
|
if (liveNodes.isEmpty())
|
||||||
|
@ -1399,7 +1400,7 @@ public class SolrCLI {
|
||||||
"create_collection can only be used when running in SolrCloud mode.\n");
|
"create_collection can only be used when running in SolrCloud mode.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
try (CloudSolrClient cloudSolrClient = new CloudSolrClient(zkHost)) {
|
try (CloudSolrClient cloudSolrClient = new CloudSolrClient.Builder().withZkHost(zkHost).build()) {
|
||||||
echo("\nConnecting to ZooKeeper at " + zkHost+" ...");
|
echo("\nConnecting to ZooKeeper at " + zkHost+" ...");
|
||||||
cloudSolrClient.connect();
|
cloudSolrClient.connect();
|
||||||
runCloudTool(cloudSolrClient, cli);
|
runCloudTool(cloudSolrClient, cli);
|
||||||
|
@ -1708,7 +1709,7 @@ public class SolrCLI {
|
||||||
" is running in standalone server mode, upconfig can only be used when running in SolrCloud mode.\n");
|
" is running in standalone server mode, upconfig can only be used when running in SolrCloud mode.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
try (CloudSolrClient cloudSolrClient = new CloudSolrClient(zkHost)) {
|
try (CloudSolrClient cloudSolrClient = new CloudSolrClient.Builder().withZkHost(zkHost).build()) {
|
||||||
echo("\nConnecting to ZooKeeper at " + zkHost + " ...");
|
echo("\nConnecting to ZooKeeper at " + zkHost + " ...");
|
||||||
cloudSolrClient.connect();
|
cloudSolrClient.connect();
|
||||||
upconfig(cloudSolrClient, cli, cli.getOptionValue("confname"), cli.getOptionValue("confdir"));
|
upconfig(cloudSolrClient, cli, cli.getOptionValue("confname"), cli.getOptionValue("confdir"));
|
||||||
|
@ -1763,7 +1764,7 @@ public class SolrCLI {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
try (CloudSolrClient cloudSolrClient = new CloudSolrClient(zkHost)) {
|
try (CloudSolrClient cloudSolrClient = new CloudSolrClient.Builder().withZkHost(zkHost).build()) {
|
||||||
echo("\nConnecting to ZooKeeper at " + zkHost + " ...");
|
echo("\nConnecting to ZooKeeper at " + zkHost + " ...");
|
||||||
cloudSolrClient.connect();
|
cloudSolrClient.connect();
|
||||||
downconfig(cloudSolrClient, cli.getOptionValue("confname"), cli.getOptionValue("confdir"));
|
downconfig(cloudSolrClient, cli.getOptionValue("confname"), cli.getOptionValue("confdir"));
|
||||||
|
@ -1854,7 +1855,7 @@ public class SolrCLI {
|
||||||
|
|
||||||
protected void deleteCollection(CommandLine cli) throws Exception {
|
protected void deleteCollection(CommandLine cli) throws Exception {
|
||||||
String zkHost = getZkHost(cli);
|
String zkHost = getZkHost(cli);
|
||||||
try (CloudSolrClient cloudSolrClient = new CloudSolrClient(zkHost)) {
|
try (CloudSolrClient cloudSolrClient = new CloudSolrClient.Builder().withZkHost(zkHost).build()) {
|
||||||
echo("Connecting to ZooKeeper at " + zkHost);
|
echo("Connecting to ZooKeeper at " + zkHost);
|
||||||
cloudSolrClient.connect();
|
cloudSolrClient.connect();
|
||||||
deleteCollection(cloudSolrClient, cli);
|
deleteCollection(cloudSolrClient, cli);
|
||||||
|
@ -2031,7 +2032,7 @@ public class SolrCLI {
|
||||||
echo("\nPOSTing request to Config API: " + solrUrl + updatePath);
|
echo("\nPOSTing request to Config API: " + solrUrl + updatePath);
|
||||||
echo(jsonBody);
|
echo(jsonBody);
|
||||||
|
|
||||||
try (SolrClient solrClient = new HttpSolrClient(solrUrl)) {
|
try (SolrClient solrClient = new Builder(solrUrl).build()) {
|
||||||
NamedList<Object> result = postJsonToSolr(solrClient, updatePath, jsonBody);
|
NamedList<Object> result = postJsonToSolr(solrClient, updatePath, jsonBody);
|
||||||
Integer statusCode = (Integer)((NamedList)result.get("responseHeader")).get("status");
|
Integer statusCode = (Integer)((NamedList)result.get("responseHeader")).get("status");
|
||||||
if (statusCode == 0) {
|
if (statusCode == 0) {
|
||||||
|
@ -2426,7 +2427,9 @@ public class SolrCLI {
|
||||||
protected void waitToSeeLiveNodes(int maxWaitSecs, String zkHost, int numNodes) {
|
protected void waitToSeeLiveNodes(int maxWaitSecs, String zkHost, int numNodes) {
|
||||||
CloudSolrClient cloudClient = null;
|
CloudSolrClient cloudClient = null;
|
||||||
try {
|
try {
|
||||||
cloudClient = new CloudSolrClient(zkHost);
|
cloudClient = new CloudSolrClient.Builder()
|
||||||
|
.withZkHost(zkHost)
|
||||||
|
.build();
|
||||||
cloudClient.connect();
|
cloudClient.connect();
|
||||||
Set<String> liveNodes = cloudClient.getZkStateReader().getClusterState().getLiveNodes();
|
Set<String> liveNodes = cloudClient.getZkStateReader().getClusterState().getLiveNodes();
|
||||||
int numLiveNodes = (liveNodes != null) ? liveNodes.size() : 0;
|
int numLiveNodes = (liveNodes != null) ? liveNodes.size() : 0;
|
||||||
|
|
|
@ -59,8 +59,8 @@ public class TestTolerantSearch extends SolrJettyTestBase {
|
||||||
solrHome = createSolrHome();
|
solrHome = createSolrHome();
|
||||||
createJetty(solrHome.getAbsolutePath());
|
createJetty(solrHome.getAbsolutePath());
|
||||||
String url = jetty.getBaseUrl().toString();
|
String url = jetty.getBaseUrl().toString();
|
||||||
collection1 = new HttpSolrClient(url + "/collection1");
|
collection1 = getHttpSolrClient(url + "/collection1");
|
||||||
collection2 = new HttpSolrClient(url + "/collection2");
|
collection2 = getHttpSolrClient(url + "/collection2");
|
||||||
|
|
||||||
String urlCollection1 = jetty.getBaseUrl().toString() + "/" + "collection1";
|
String urlCollection1 = jetty.getBaseUrl().toString() + "/" + "collection1";
|
||||||
String urlCollection2 = jetty.getBaseUrl().toString() + "/" + "collection2";
|
String urlCollection2 = jetty.getBaseUrl().toString() + "/" + "collection2";
|
||||||
|
@ -68,7 +68,7 @@ public class TestTolerantSearch extends SolrJettyTestBase {
|
||||||
shard2 = urlCollection2.replaceAll("https?://", "");
|
shard2 = urlCollection2.replaceAll("https?://", "");
|
||||||
|
|
||||||
//create second core
|
//create second core
|
||||||
try (HttpSolrClient nodeClient = new HttpSolrClient(url)) {
|
try (HttpSolrClient nodeClient = getHttpSolrClient(url)) {
|
||||||
CoreAdminRequest.Create req = new CoreAdminRequest.Create();
|
CoreAdminRequest.Create req = new CoreAdminRequest.Create();
|
||||||
req.setCoreName("collection2");
|
req.setCoreName("collection2");
|
||||||
req.setConfigSet("collection1");
|
req.setConfigSet("collection1");
|
||||||
|
|
|
@ -80,11 +80,11 @@ public class ConnectionReuseTest extends AbstractFullDistribZkTestBase {
|
||||||
HttpClient httpClient = HttpClientUtil.createClient(null);
|
HttpClient httpClient = HttpClientUtil.createClient(null);
|
||||||
int rndClient = random().nextInt(3);
|
int rndClient = random().nextInt(3);
|
||||||
if (rndClient == 0) {
|
if (rndClient == 0) {
|
||||||
client = new ConcurrentUpdateSolrClient(url.toString(), httpClient, 6, 1); // currently only testing with 1 thread
|
client = getConcurrentUpdateSolrClient(url.toString(), httpClient, 6, 1); // currently only testing with 1 thread
|
||||||
} else if (rndClient == 1) {
|
} else if (rndClient == 1) {
|
||||||
client = new HttpSolrClient(url.toString(), httpClient);
|
client = getHttpSolrClient(url.toString(), httpClient);
|
||||||
} else if (rndClient == 2) {
|
} else if (rndClient == 2) {
|
||||||
client = new CloudSolrClient(zkServer.getZkAddress(), random().nextBoolean(), httpClient);
|
client = getCloudSolrClient(zkServer.getZkAddress(), random().nextBoolean(), httpClient);
|
||||||
((CloudSolrClient) client).setParallelUpdates(random().nextBoolean());
|
((CloudSolrClient) client).setParallelUpdates(random().nextBoolean());
|
||||||
((CloudSolrClient) client).setDefaultCollection(DEFAULT_COLLECTION);
|
((CloudSolrClient) client).setDefaultCollection(DEFAULT_COLLECTION);
|
||||||
((CloudSolrClient) client).getLbClient().setConnectionTimeout(30000);
|
((CloudSolrClient) client).getLbClient().setConnectionTimeout(30000);
|
||||||
|
|
|
@ -19,7 +19,6 @@ package org.apache.solr.client.solrj.embedded;
|
||||||
import com.google.common.base.Charsets;
|
import com.google.common.base.Charsets;
|
||||||
import org.apache.solr.SolrTestCaseJ4;
|
import org.apache.solr.SolrTestCaseJ4;
|
||||||
import org.apache.solr.client.solrj.SolrClient;
|
import org.apache.solr.client.solrj.SolrClient;
|
||||||
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
|
||||||
import org.apache.solr.client.solrj.request.CoreAdminRequest;
|
import org.apache.solr.client.solrj.request.CoreAdminRequest;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
@ -53,7 +52,7 @@ public class TestJettySolrRunner extends SolrTestCaseJ4 {
|
||||||
try {
|
try {
|
||||||
runner.start();
|
runner.start();
|
||||||
|
|
||||||
SolrClient client = new HttpSolrClient(runner.getBaseUrl().toString());
|
SolrClient client = getHttpSolrClient(runner.getBaseUrl().toString());
|
||||||
|
|
||||||
CoreAdminRequest.Create createReq = new CoreAdminRequest.Create();
|
CoreAdminRequest.Create createReq = new CoreAdminRequest.Create();
|
||||||
createReq.setCoreName("newcore");
|
createReq.setCoreName("newcore");
|
||||||
|
|
|
@ -16,6 +16,11 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.solr.cloud;
|
package org.apache.solr.cloud;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.lang.invoke.MethodHandles;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.lucene.util.LuceneTestCase.Slow;
|
import org.apache.lucene.util.LuceneTestCase.Slow;
|
||||||
import org.apache.solr.client.solrj.SolrClient;
|
import org.apache.solr.client.solrj.SolrClient;
|
||||||
import org.apache.solr.client.solrj.SolrQuery;
|
import org.apache.solr.client.solrj.SolrQuery;
|
||||||
|
@ -32,16 +37,9 @@ import org.apache.solr.common.SolrException;
|
||||||
import org.apache.solr.common.SolrInputDocument;
|
import org.apache.solr.common.SolrInputDocument;
|
||||||
import org.apache.solr.common.params.CollectionParams.CollectionAction;
|
import org.apache.solr.common.params.CollectionParams.CollectionAction;
|
||||||
import org.apache.solr.common.params.ModifiableSolrParams;
|
import org.apache.solr.common.params.ModifiableSolrParams;
|
||||||
import org.junit.AfterClass;
|
import org.junit.Test;
|
||||||
import org.junit.BeforeClass;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.lang.invoke.MethodHandles;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test sync phase that occurs when Leader goes down and a new Leader is
|
* Test sync phase that occurs when Leader goes down and a new Leader is
|
||||||
|
@ -119,7 +117,7 @@ public class AliasIntegrationTest extends AbstractFullDistribZkTestBase {
|
||||||
query.set("collection", "testalias");
|
query.set("collection", "testalias");
|
||||||
JettySolrRunner jetty = jettys.get(random().nextInt(jettys.size()));
|
JettySolrRunner jetty = jettys.get(random().nextInt(jettys.size()));
|
||||||
int port = jetty.getLocalPort();
|
int port = jetty.getLocalPort();
|
||||||
try (HttpSolrClient client = new HttpSolrClient(buildUrl(port) + "/testalias")) {
|
try (HttpSolrClient client = getHttpSolrClient(buildUrl(port) + "/testalias")) {
|
||||||
res = client.query(query);
|
res = client.query(query);
|
||||||
assertEquals(3, res.getResults().getNumFound());
|
assertEquals(3, res.getResults().getNumFound());
|
||||||
}
|
}
|
||||||
|
@ -128,7 +126,7 @@ public class AliasIntegrationTest extends AbstractFullDistribZkTestBase {
|
||||||
query = new SolrQuery("*:*");
|
query = new SolrQuery("*:*");
|
||||||
jetty = jettys.get(random().nextInt(jettys.size()));
|
jetty = jettys.get(random().nextInt(jettys.size()));
|
||||||
port = jetty.getLocalPort();
|
port = jetty.getLocalPort();
|
||||||
try (HttpSolrClient client = new HttpSolrClient(buildUrl(port) + "/testalias")) {
|
try (HttpSolrClient client = getHttpSolrClient(buildUrl(port) + "/testalias")) {
|
||||||
res = client.query(query);
|
res = client.query(query);
|
||||||
assertEquals(3, res.getResults().getNumFound());
|
assertEquals(3, res.getResults().getNumFound());
|
||||||
}
|
}
|
||||||
|
@ -136,7 +134,7 @@ public class AliasIntegrationTest extends AbstractFullDistribZkTestBase {
|
||||||
createAlias("testalias", "collection2,collection1");
|
createAlias("testalias", "collection2,collection1");
|
||||||
|
|
||||||
// search with new cloud client
|
// search with new cloud client
|
||||||
try (CloudSolrClient cloudSolrClient = new CloudSolrClient(zkServer.getZkAddress(), random().nextBoolean())) {
|
try (CloudSolrClient cloudSolrClient = getCloudSolrClient(zkServer.getZkAddress(), random().nextBoolean())) {
|
||||||
cloudSolrClient.setParallelUpdates(random().nextBoolean());
|
cloudSolrClient.setParallelUpdates(random().nextBoolean());
|
||||||
query = new SolrQuery("*:*");
|
query = new SolrQuery("*:*");
|
||||||
query.set("collection", "testalias");
|
query.set("collection", "testalias");
|
||||||
|
@ -155,7 +153,7 @@ public class AliasIntegrationTest extends AbstractFullDistribZkTestBase {
|
||||||
query.set("collection", "testalias");
|
query.set("collection", "testalias");
|
||||||
jetty = jettys.get(random().nextInt(jettys.size()));
|
jetty = jettys.get(random().nextInt(jettys.size()));
|
||||||
port = jetty.getLocalPort();
|
port = jetty.getLocalPort();
|
||||||
try (HttpSolrClient client = new HttpSolrClient(buildUrl(port) + "/testalias")) {
|
try (HttpSolrClient client = getHttpSolrClient(buildUrl(port) + "/testalias")) {
|
||||||
res = client.query(query);
|
res = client.query(query);
|
||||||
assertEquals(5, res.getResults().getNumFound());
|
assertEquals(5, res.getResults().getNumFound());
|
||||||
}
|
}
|
||||||
|
@ -163,7 +161,7 @@ public class AliasIntegrationTest extends AbstractFullDistribZkTestBase {
|
||||||
query = new SolrQuery("*:*");
|
query = new SolrQuery("*:*");
|
||||||
jetty = jettys.get(random().nextInt(jettys.size()));
|
jetty = jettys.get(random().nextInt(jettys.size()));
|
||||||
port = jetty.getLocalPort();
|
port = jetty.getLocalPort();
|
||||||
try (HttpSolrClient client = new HttpSolrClient(buildUrl(port) + "/testalias")) {
|
try (HttpSolrClient client = getHttpSolrClient(buildUrl(port) + "/testalias")) {
|
||||||
res = client.query(query);
|
res = client.query(query);
|
||||||
assertEquals(5, res.getResults().getNumFound());
|
assertEquals(5, res.getResults().getNumFound());
|
||||||
}
|
}
|
||||||
|
@ -190,7 +188,7 @@ public class AliasIntegrationTest extends AbstractFullDistribZkTestBase {
|
||||||
// try a std client
|
// try a std client
|
||||||
// search 1 and 2, but have no collections param
|
// search 1 and 2, but have no collections param
|
||||||
query = new SolrQuery("*:*");
|
query = new SolrQuery("*:*");
|
||||||
try (HttpSolrClient client = new HttpSolrClient(getBaseUrl((HttpSolrClient) clients.get(0)) + "/testalias")) {
|
try (HttpSolrClient client = getHttpSolrClient(getBaseUrl((HttpSolrClient) clients.get(0)) + "/testalias")) {
|
||||||
res = client.query(query);
|
res = client.query(query);
|
||||||
assertEquals(5, res.getResults().getNumFound());
|
assertEquals(5, res.getResults().getNumFound());
|
||||||
}
|
}
|
||||||
|
@ -200,7 +198,7 @@ public class AliasIntegrationTest extends AbstractFullDistribZkTestBase {
|
||||||
// a second alias
|
// a second alias
|
||||||
createAlias("testalias2", "collection2");
|
createAlias("testalias2", "collection2");
|
||||||
|
|
||||||
try (HttpSolrClient client = new HttpSolrClient(getBaseUrl((HttpSolrClient) clients.get(0)) + "/testalias")) {
|
try (HttpSolrClient client = getHttpSolrClient(getBaseUrl((HttpSolrClient) clients.get(0)) + "/testalias")) {
|
||||||
SolrInputDocument doc8 = getDoc(id, 11, i1, -600, tlong, 600, t1,
|
SolrInputDocument doc8 = getDoc(id, 11, i1, -600, tlong, 600, t1,
|
||||||
"humpty dumpy4 sat on a walls");
|
"humpty dumpy4 sat on a walls");
|
||||||
client.add(doc8);
|
client.add(doc8);
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.solr.cloud;
|
package org.apache.solr.cloud;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.solr.client.solrj.SolrRequest;
|
import org.apache.solr.client.solrj.SolrRequest;
|
||||||
import org.apache.solr.client.solrj.SolrServerException;
|
import org.apache.solr.client.solrj.SolrServerException;
|
||||||
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
||||||
|
@ -27,8 +29,6 @@ import org.apache.solr.common.params.ModifiableSolrParams;
|
||||||
import org.apache.solr.common.util.NamedList;
|
import org.apache.solr.common.util.NamedList;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
public class AsyncMigrateRouteKeyTest extends MigrateRouteKeyTest {
|
public class AsyncMigrateRouteKeyTest extends MigrateRouteKeyTest {
|
||||||
|
|
||||||
public AsyncMigrateRouteKeyTest() {
|
public AsyncMigrateRouteKeyTest() {
|
||||||
|
@ -113,7 +113,7 @@ public class AsyncMigrateRouteKeyTest extends MigrateRouteKeyTest {
|
||||||
String baseUrl = ((HttpSolrClient) shardToJetty.get(SHARD1).get(0).client.solrClient).getBaseURL();
|
String baseUrl = ((HttpSolrClient) shardToJetty.get(SHARD1).get(0).client.solrClient).getBaseURL();
|
||||||
baseUrl = baseUrl.substring(0, baseUrl.length() - "collection1".length());
|
baseUrl = baseUrl.substring(0, baseUrl.length() - "collection1".length());
|
||||||
|
|
||||||
try (HttpSolrClient baseServer = new HttpSolrClient(baseUrl)) {
|
try (HttpSolrClient baseServer = getHttpSolrClient(baseUrl)) {
|
||||||
baseServer.setConnectionTimeout(15000);
|
baseServer.setConnectionTimeout(15000);
|
||||||
return baseServer.request(request);
|
return baseServer.request(request);
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,6 @@ import org.apache.solr.common.cloud.ZkCoreNodeProps;
|
||||||
import org.apache.solr.common.cloud.ZkStateReader;
|
import org.apache.solr.common.cloud.ZkStateReader;
|
||||||
import org.apache.solr.common.params.CollectionParams;
|
import org.apache.solr.common.params.CollectionParams;
|
||||||
import org.apache.solr.common.params.CommonParams;
|
import org.apache.solr.common.params.CommonParams;
|
||||||
import org.apache.solr.common.params.CoreAdminParams;
|
|
||||||
import org.apache.solr.common.params.ModifiableSolrParams;
|
import org.apache.solr.common.params.ModifiableSolrParams;
|
||||||
import org.apache.solr.common.util.NamedList;
|
import org.apache.solr.common.util.NamedList;
|
||||||
import org.apache.solr.common.util.StrUtils;
|
import org.apache.solr.common.util.StrUtils;
|
||||||
|
@ -172,7 +171,7 @@ public class BaseCdcrDistributedZkTest extends AbstractDistribZkTestBase {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected CloudSolrClient createCloudClient(String defaultCollection) {
|
protected CloudSolrClient createCloudClient(String defaultCollection) {
|
||||||
CloudSolrClient server = new CloudSolrClient(zkServer.getZkAddress(), random().nextBoolean());
|
CloudSolrClient server = getCloudSolrClient(zkServer.getZkAddress(), random().nextBoolean());
|
||||||
server.setParallelUpdates(random().nextBoolean());
|
server.setParallelUpdates(random().nextBoolean());
|
||||||
if (defaultCollection != null) server.setDefaultCollection(defaultCollection);
|
if (defaultCollection != null) server.setDefaultCollection(defaultCollection);
|
||||||
server.getLbClient().getHttpClient().getParams()
|
server.getLbClient().getHttpClient().getParams()
|
||||||
|
@ -745,7 +744,7 @@ public class BaseCdcrDistributedZkTest extends AbstractDistribZkTestBase {
|
||||||
protected static SolrClient createNewSolrServer(String baseUrl) {
|
protected static SolrClient createNewSolrServer(String baseUrl) {
|
||||||
try {
|
try {
|
||||||
// setup the server...
|
// setup the server...
|
||||||
HttpSolrClient s = new HttpSolrClient(baseUrl);
|
HttpSolrClient s = getHttpSolrClient(baseUrl);
|
||||||
s.setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT);
|
s.setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT);
|
||||||
s.setDefaultMaxConnectionsPerHost(100);
|
s.setDefaultMaxConnectionsPerHost(100);
|
||||||
s.setMaxTotalConnections(100);
|
s.setMaxTotalConnections(100);
|
||||||
|
|
|
@ -147,7 +147,7 @@ public class BasicDistributedZk2Test extends AbstractFullDistribZkTestBase {
|
||||||
|
|
||||||
private void testNodeWithoutCollectionForwarding() throws Exception {
|
private void testNodeWithoutCollectionForwarding() throws Exception {
|
||||||
final String baseUrl = getBaseUrl((HttpSolrClient) clients.get(0));
|
final String baseUrl = getBaseUrl((HttpSolrClient) clients.get(0));
|
||||||
try (HttpSolrClient client = new HttpSolrClient(baseUrl)) {
|
try (HttpSolrClient client = getHttpSolrClient(baseUrl)) {
|
||||||
client.setConnectionTimeout(30000);
|
client.setConnectionTimeout(30000);
|
||||||
Create createCmd = new Create();
|
Create createCmd = new Create();
|
||||||
createCmd.setRoles("none");
|
createCmd.setRoles("none");
|
||||||
|
@ -180,7 +180,7 @@ public class BasicDistributedZk2Test extends AbstractFullDistribZkTestBase {
|
||||||
|
|
||||||
SolrQuery query = new SolrQuery("*:*");
|
SolrQuery query = new SolrQuery("*:*");
|
||||||
|
|
||||||
try (HttpSolrClient qclient = new HttpSolrClient(baseUrl + "/onenodecollection" + "core")) {
|
try (HttpSolrClient qclient = getHttpSolrClient(baseUrl + "/onenodecollection" + "core")) {
|
||||||
|
|
||||||
// it might take a moment for the proxy node to see us in their cloud state
|
// it might take a moment for the proxy node to see us in their cloud state
|
||||||
waitForNon403or404or503(qclient);
|
waitForNon403or404or503(qclient);
|
||||||
|
@ -196,7 +196,7 @@ public class BasicDistributedZk2Test extends AbstractFullDistribZkTestBase {
|
||||||
assertEquals(docs - 1, results.getResults().getNumFound());
|
assertEquals(docs - 1, results.getResults().getNumFound());
|
||||||
}
|
}
|
||||||
|
|
||||||
try (HttpSolrClient qclient = new HttpSolrClient(baseUrl + "/onenodecollection")) {
|
try (HttpSolrClient qclient = getHttpSolrClient(baseUrl + "/onenodecollection")) {
|
||||||
QueryResponse results = qclient.query(query);
|
QueryResponse results = qclient.query(query);
|
||||||
assertEquals(docs - 1, results.getResults().getNumFound());
|
assertEquals(docs - 1, results.getResults().getNumFound());
|
||||||
|
|
||||||
|
|
|
@ -404,7 +404,7 @@ public class BasicDistributedZkTest extends AbstractFullDistribZkTestBase {
|
||||||
for (Slice slice : dColl.getActiveSlices()) {
|
for (Slice slice : dColl.getActiveSlices()) {
|
||||||
long sliceDocCount = -1;
|
long sliceDocCount = -1;
|
||||||
for (Replica rep : slice.getReplicas()) {
|
for (Replica rep : slice.getReplicas()) {
|
||||||
HttpSolrClient one = new HttpSolrClient(rep.getCoreUrl());
|
HttpSolrClient one = getHttpSolrClient(rep.getCoreUrl());
|
||||||
SolrQuery query = new SolrQuery("*:*");
|
SolrQuery query = new SolrQuery("*:*");
|
||||||
query.setDistrib(false);
|
query.setDistrib(false);
|
||||||
QueryResponse resp = one.query(query);
|
QueryResponse resp = one.query(query);
|
||||||
|
@ -528,7 +528,7 @@ public class BasicDistributedZkTest extends AbstractFullDistribZkTestBase {
|
||||||
private void testStopAndStartCoresInOneInstance() throws Exception {
|
private void testStopAndStartCoresInOneInstance() throws Exception {
|
||||||
SolrClient client = clients.get(0);
|
SolrClient client = clients.get(0);
|
||||||
String url3 = getBaseUrl(client);
|
String url3 = getBaseUrl(client);
|
||||||
try (final HttpSolrClient httpSolrClient = new HttpSolrClient(url3)) {
|
try (final HttpSolrClient httpSolrClient = getHttpSolrClient(url3)) {
|
||||||
httpSolrClient.setConnectionTimeout(15000);
|
httpSolrClient.setConnectionTimeout(15000);
|
||||||
httpSolrClient.setSoTimeout(60000);
|
httpSolrClient.setSoTimeout(60000);
|
||||||
ThreadPoolExecutor executor = null;
|
ThreadPoolExecutor executor = null;
|
||||||
|
@ -749,7 +749,7 @@ public class BasicDistributedZkTest extends AbstractFullDistribZkTestBase {
|
||||||
|
|
||||||
private Long getNumCommits(HttpSolrClient sourceClient) throws
|
private Long getNumCommits(HttpSolrClient sourceClient) throws
|
||||||
SolrServerException, IOException {
|
SolrServerException, IOException {
|
||||||
try (HttpSolrClient client = new HttpSolrClient(sourceClient.getBaseURL())) {
|
try (HttpSolrClient client = getHttpSolrClient(sourceClient.getBaseURL())) {
|
||||||
client.setConnectionTimeout(15000);
|
client.setConnectionTimeout(15000);
|
||||||
client.setSoTimeout(60000);
|
client.setSoTimeout(60000);
|
||||||
ModifiableSolrParams params = new ModifiableSolrParams();
|
ModifiableSolrParams params = new ModifiableSolrParams();
|
||||||
|
@ -840,7 +840,7 @@ public class BasicDistributedZkTest extends AbstractFullDistribZkTestBase {
|
||||||
ZkCoreNodeProps props = new ZkCoreNodeProps(getCommonCloudSolrClient().getZkStateReader().getClusterState().getLeader(oneInstanceCollection2, "slice1"));
|
ZkCoreNodeProps props = new ZkCoreNodeProps(getCommonCloudSolrClient().getZkStateReader().getClusterState().getLeader(oneInstanceCollection2, "slice1"));
|
||||||
|
|
||||||
// now test that unloading a core gets us a new leader
|
// now test that unloading a core gets us a new leader
|
||||||
try (HttpSolrClient unloadClient = new HttpSolrClient(baseUrl)) {
|
try (HttpSolrClient unloadClient = getHttpSolrClient(baseUrl)) {
|
||||||
unloadClient.setConnectionTimeout(15000);
|
unloadClient.setConnectionTimeout(15000);
|
||||||
unloadClient.setSoTimeout(60000);
|
unloadClient.setSoTimeout(60000);
|
||||||
Unload unloadCmd = new Unload(true);
|
Unload unloadCmd = new Unload(true);
|
||||||
|
@ -960,7 +960,7 @@ public class BasicDistributedZkTest extends AbstractFullDistribZkTestBase {
|
||||||
List<SolrClient> collectionClients, final String baseUrl, final int num,
|
List<SolrClient> collectionClients, final String baseUrl, final int num,
|
||||||
final String shardId) {
|
final String shardId) {
|
||||||
Callable call = () -> {
|
Callable call = () -> {
|
||||||
try (HttpSolrClient client = new HttpSolrClient(baseUrl)) {
|
try (HttpSolrClient client = getHttpSolrClient(baseUrl)) {
|
||||||
client.setConnectionTimeout(15000);
|
client.setConnectionTimeout(15000);
|
||||||
Create createCmd = new Create();
|
Create createCmd = new Create();
|
||||||
createCmd.setRoles("none");
|
createCmd.setRoles("none");
|
||||||
|
@ -1089,7 +1089,7 @@ public class BasicDistributedZkTest extends AbstractFullDistribZkTestBase {
|
||||||
final int frozeUnique = unique;
|
final int frozeUnique = unique;
|
||||||
Callable call = () -> {
|
Callable call = () -> {
|
||||||
|
|
||||||
try (HttpSolrClient client1 = new HttpSolrClient(baseUrl)) {
|
try (HttpSolrClient client1 = getHttpSolrClient(baseUrl)) {
|
||||||
client1.setConnectionTimeout(15000);
|
client1.setConnectionTimeout(15000);
|
||||||
client1.setSoTimeout(60000);
|
client1.setSoTimeout(60000);
|
||||||
Create createCmd = new Create();
|
Create createCmd = new Create();
|
||||||
|
@ -1117,10 +1117,11 @@ public class BasicDistributedZkTest extends AbstractFullDistribZkTestBase {
|
||||||
protected SolrClient createNewSolrClient(String collection, String baseUrl) {
|
protected SolrClient createNewSolrClient(String collection, String baseUrl) {
|
||||||
try {
|
try {
|
||||||
// setup the server...
|
// setup the server...
|
||||||
HttpSolrClient client = new HttpSolrClient(baseUrl + "/" + collection);
|
HttpSolrClient client = getHttpSolrClient(baseUrl + "/" + collection);
|
||||||
client.setSoTimeout(120000);
|
client.setSoTimeout(120000);
|
||||||
client.setDefaultMaxConnectionsPerHost(100);
|
client.setDefaultMaxConnectionsPerHost(100);
|
||||||
client.setMaxTotalConnections(100);
|
client.setMaxTotalConnections(100);
|
||||||
|
|
||||||
return client;
|
return client;
|
||||||
}
|
}
|
||||||
catch (Exception ex) {
|
catch (Exception ex) {
|
||||||
|
|
|
@ -16,7 +16,15 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.solr.cloud;
|
package org.apache.solr.cloud;
|
||||||
|
|
||||||
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
|
import java.lang.invoke.MethodHandles;
|
||||||
|
import java.net.ConnectException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
|
import org.apache.http.client.HttpClient;
|
||||||
import org.apache.http.impl.client.CloseableHttpClient;
|
import org.apache.http.impl.client.CloseableHttpClient;
|
||||||
import org.apache.lucene.util.LuceneTestCase.Slow;
|
import org.apache.lucene.util.LuceneTestCase.Slow;
|
||||||
import org.apache.solr.SolrTestCaseJ4.SuppressObjectReleaseTracker;
|
import org.apache.solr.SolrTestCaseJ4.SuppressObjectReleaseTracker;
|
||||||
|
@ -36,13 +44,7 @@ import org.junit.Test;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.lang.invoke.MethodHandles;
|
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
|
||||||
import java.net.ConnectException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
|
||||||
|
|
||||||
@Slow
|
@Slow
|
||||||
@SuppressSSL(bugUrl = "https://issues.apache.org/jira/browse/SOLR-5776")
|
@SuppressSSL(bugUrl = "https://issues.apache.org/jira/browse/SOLR-5776")
|
||||||
|
@ -295,14 +297,10 @@ public class ChaosMonkeyNothingIsSafeTest extends AbstractFullDistribZkTestBase
|
||||||
this.clients = clients;
|
this.clients = clients;
|
||||||
HttpClientUtil.setConnectionTimeout(httpClient, clientConnectionTimeout);
|
HttpClientUtil.setConnectionTimeout(httpClient, clientConnectionTimeout);
|
||||||
HttpClientUtil.setSoTimeout(httpClient, clientSoTimeout);
|
HttpClientUtil.setSoTimeout(httpClient, clientSoTimeout);
|
||||||
cusc = new ConcurrentUpdateSolrClient(
|
|
||||||
((HttpSolrClient) clients.get(0)).getBaseURL(), httpClient, 8,
|
cusc = new ErrorLoggingConcurrentUpdateSolrClient(((HttpSolrClient) clients.get(0)).getBaseURL(), httpClient, 8, 2);
|
||||||
2) {
|
cusc.setConnectionTimeout(10000);
|
||||||
@Override
|
cusc.setSoTimeout(clientSoTimeout);
|
||||||
public void handleError(Throwable ex) {
|
|
||||||
log.warn("cusc error", ex);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -359,14 +357,8 @@ public class ChaosMonkeyNothingIsSafeTest extends AbstractFullDistribZkTestBase
|
||||||
clientIndex = 0;
|
clientIndex = 0;
|
||||||
}
|
}
|
||||||
cusc.shutdownNow();
|
cusc.shutdownNow();
|
||||||
cusc = new ConcurrentUpdateSolrClient(
|
cusc = new ErrorLoggingConcurrentUpdateSolrClient(((HttpSolrClient) clients.get(clientIndex)).getBaseURL(),
|
||||||
((HttpSolrClient) clients.get(clientIndex)).getBaseURL(),
|
httpClient, 30, 3);
|
||||||
httpClient, 30, 3) {
|
|
||||||
@Override
|
|
||||||
public void handleError(Throwable ex) {
|
|
||||||
log.warn("cusc error", ex);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -403,4 +395,13 @@ public class ChaosMonkeyNothingIsSafeTest extends AbstractFullDistribZkTestBase
|
||||||
indexDoc(doc);
|
indexDoc(doc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ErrorLoggingConcurrentUpdateSolrClient extends ConcurrentUpdateSolrClient {
|
||||||
|
public ErrorLoggingConcurrentUpdateSolrClient(String serverUrl, HttpClient httpClient, int queueSize, int threadCount) {
|
||||||
|
super(serverUrl, httpClient, queueSize, threadCount, null, false);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void handleError(Throwable ex) {
|
||||||
|
log.warn("cusc error", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,7 +131,7 @@ public class CollectionReloadTest extends AbstractFullDistribZkTestBase {
|
||||||
ZkCoreNodeProps coreProps = new ZkCoreNodeProps(replica);
|
ZkCoreNodeProps coreProps = new ZkCoreNodeProps(replica);
|
||||||
String coreName = coreProps.getCoreName();
|
String coreName = coreProps.getCoreName();
|
||||||
boolean reloadedOk = false;
|
boolean reloadedOk = false;
|
||||||
try (HttpSolrClient client = new HttpSolrClient(coreProps.getBaseUrl())) {
|
try (HttpSolrClient client = getHttpSolrClient(coreProps.getBaseUrl())) {
|
||||||
CoreAdminResponse statusResp = CoreAdminRequest.getStatus(coreName, client);
|
CoreAdminResponse statusResp = CoreAdminRequest.getStatus(coreName, client);
|
||||||
long leaderCoreStartTime = statusResp.getStartTime(coreName).getTime();
|
long leaderCoreStartTime = statusResp.getStartTime(coreName).getTime();
|
||||||
|
|
||||||
|
|
|
@ -722,7 +722,7 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
|
|
||||||
String url = getUrlFromZk(collection);
|
String url = getUrlFromZk(collection);
|
||||||
|
|
||||||
try (HttpSolrClient collectionClient = new HttpSolrClient(url)) {
|
try (HttpSolrClient collectionClient = getHttpSolrClient(url)) {
|
||||||
// poll for a second - it can take a moment before we are ready to serve
|
// poll for a second - it can take a moment before we are ready to serve
|
||||||
waitForNon403or404or503(collectionClient);
|
waitForNon403or404or503(collectionClient);
|
||||||
}
|
}
|
||||||
|
@ -742,7 +742,7 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
|
|
||||||
String url = getUrlFromZk(collection);
|
String url = getUrlFromZk(collection);
|
||||||
|
|
||||||
try (HttpSolrClient collectionClient = new HttpSolrClient(url)) {
|
try (HttpSolrClient collectionClient = getHttpSolrClient(url)) {
|
||||||
// poll for a second - it can take a moment before we are ready to serve
|
// poll for a second - it can take a moment before we are ready to serve
|
||||||
waitForNon403or404or503(collectionClient);
|
waitForNon403or404or503(collectionClient);
|
||||||
}
|
}
|
||||||
|
@ -789,7 +789,7 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
|
|
||||||
String url = getUrlFromZk(collectionName);
|
String url = getUrlFromZk(collectionName);
|
||||||
|
|
||||||
try (HttpSolrClient collectionClient = new HttpSolrClient(url)) {
|
try (HttpSolrClient collectionClient = getHttpSolrClient(url)) {
|
||||||
|
|
||||||
// lets try and use the solrj client to index a couple documents
|
// lets try and use the solrj client to index a couple documents
|
||||||
SolrInputDocument doc1 = getDoc(id, 6, i1, -600, tlong, 600, t1,
|
SolrInputDocument doc1 = getDoc(id, 6, i1, -600, tlong, 600, t1,
|
||||||
|
@ -886,7 +886,7 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
|
|
||||||
url = getUrlFromZk(collectionName);
|
url = getUrlFromZk(collectionName);
|
||||||
|
|
||||||
try (HttpSolrClient collectionClient = new HttpSolrClient(url)) {
|
try (HttpSolrClient collectionClient = getHttpSolrClient(url)) {
|
||||||
// poll for a second - it can take a moment before we are ready to serve
|
// poll for a second - it can take a moment before we are ready to serve
|
||||||
waitForNon403or404or503(collectionClient);
|
waitForNon403or404or503(collectionClient);
|
||||||
}
|
}
|
||||||
|
@ -1061,7 +1061,7 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
Entry<String,Replica> shardEntry = shardIt.next();
|
Entry<String,Replica> shardEntry = shardIt.next();
|
||||||
ZkCoreNodeProps coreProps = new ZkCoreNodeProps(shardEntry.getValue());
|
ZkCoreNodeProps coreProps = new ZkCoreNodeProps(shardEntry.getValue());
|
||||||
CoreAdminResponse mcr;
|
CoreAdminResponse mcr;
|
||||||
try (HttpSolrClient server = new HttpSolrClient(coreProps.getBaseUrl())) {
|
try (HttpSolrClient server = getHttpSolrClient(coreProps.getBaseUrl())) {
|
||||||
mcr = CoreAdminRequest.getStatus(coreProps.getCoreName(), server);
|
mcr = CoreAdminRequest.getStatus(coreProps.getCoreName(), server);
|
||||||
}
|
}
|
||||||
long before = mcr.getStartTime(coreProps.getCoreName()).getTime();
|
long before = mcr.getStartTime(coreProps.getCoreName()).getTime();
|
||||||
|
@ -1196,7 +1196,7 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
||||||
null, client, props);
|
null, client, props);
|
||||||
assertNotNull(newReplica);
|
assertNotNull(newReplica);
|
||||||
|
|
||||||
HttpSolrClient coreclient = new HttpSolrClient(newReplica.getStr(ZkStateReader.BASE_URL_PROP));
|
HttpSolrClient coreclient = getHttpSolrClient(newReplica.getStr(ZkStateReader.BASE_URL_PROP));
|
||||||
CoreAdminResponse status = CoreAdminRequest.getStatus(newReplica.getStr("core"), coreclient);
|
CoreAdminResponse status = CoreAdminRequest.getStatus(newReplica.getStr("core"), coreclient);
|
||||||
NamedList<Object> coreStatus = status.getCoreStatus(newReplica.getStr("core"));
|
NamedList<Object> coreStatus = status.getCoreStatus(newReplica.getStr("core"));
|
||||||
String instanceDirStr = (String) coreStatus.get("instanceDir");
|
String instanceDirStr = (String) coreStatus.get("instanceDir");
|
||||||
|
|
|
@ -257,7 +257,7 @@ public class CollectionsAPISolrJTest extends AbstractFullDistribZkTestBase {
|
||||||
|
|
||||||
Replica replica1 = testCollection.getReplica("core_node1");
|
Replica replica1 = testCollection.getReplica("core_node1");
|
||||||
|
|
||||||
try (HttpSolrClient client = new HttpSolrClient(replica1.getStr("base_url"))) {
|
try (HttpSolrClient client = getHttpSolrClient(replica1.getStr("base_url"))) {
|
||||||
CoreAdminResponse status = CoreAdminRequest.getStatus(replica1.getStr("core"), client);
|
CoreAdminResponse status = CoreAdminRequest.getStatus(replica1.getStr("core"), client);
|
||||||
NamedList<Object> coreStatus = status.getCoreStatus(replica1.getStr("core"));
|
NamedList<Object> coreStatus = status.getCoreStatus(replica1.getStr("core"));
|
||||||
String dataDirStr = (String) coreStatus.get("dataDir");
|
String dataDirStr = (String) coreStatus.get("dataDir");
|
||||||
|
|
|
@ -60,7 +60,8 @@ public class ConcurrentDeleteAndCreateCollectionTest extends SolrTestCaseJ4 {
|
||||||
for (int i = 0; i < threads.length; i++) {
|
for (int i = 0; i < threads.length; i++) {
|
||||||
final String collectionName = "collection" + i;
|
final String collectionName = "collection" + i;
|
||||||
uploadConfig(configDir, collectionName);
|
uploadConfig(configDir, collectionName);
|
||||||
final SolrClient solrClient = new HttpSolrClient(solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString());
|
final String baseUrl = solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString();
|
||||||
|
final SolrClient solrClient = getHttpSolrClient(baseUrl);
|
||||||
threads[i] = new CreateDeleteSearchCollectionThread("create-delete-search-" + i, collectionName, collectionName,
|
threads[i] = new CreateDeleteSearchCollectionThread("create-delete-search-" + i, collectionName, collectionName,
|
||||||
timeToRunSec, solrClient, failure);
|
timeToRunSec, solrClient, failure);
|
||||||
}
|
}
|
||||||
|
@ -75,7 +76,8 @@ public class ConcurrentDeleteAndCreateCollectionTest extends SolrTestCaseJ4 {
|
||||||
final String configName = "testconfig";
|
final String configName = "testconfig";
|
||||||
final File configDir = getFile("solr").toPath().resolve("configsets/configset-2/conf").toFile();
|
final File configDir = getFile("solr").toPath().resolve("configsets/configset-2/conf").toFile();
|
||||||
uploadConfig(configDir, configName); // upload config once, to be used by all collections
|
uploadConfig(configDir, configName); // upload config once, to be used by all collections
|
||||||
final SolrClient solrClient = new HttpSolrClient(solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString());
|
final String baseUrl = solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString();
|
||||||
|
final SolrClient solrClient = getHttpSolrClient(baseUrl);
|
||||||
final AtomicReference<Exception> failure = new AtomicReference<>();
|
final AtomicReference<Exception> failure = new AtomicReference<>();
|
||||||
final int timeToRunSec = 30;
|
final int timeToRunSec = 30;
|
||||||
final Thread[] threads = new Thread[2];
|
final Thread[] threads = new Thread[2];
|
||||||
|
|
|
@ -167,7 +167,7 @@ public class CustomCollectionTest extends AbstractFullDistribZkTestBase {
|
||||||
|
|
||||||
String url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), collection);
|
String url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), collection);
|
||||||
|
|
||||||
try (HttpSolrClient collectionClient = new HttpSolrClient(url)) {
|
try (HttpSolrClient collectionClient = getHttpSolrClient(url)) {
|
||||||
// poll for a second - it can take a moment before we are ready to serve
|
// poll for a second - it can take a moment before we are ready to serve
|
||||||
waitForNon403or404or503(collectionClient);
|
waitForNon403or404or503(collectionClient);
|
||||||
}
|
}
|
||||||
|
@ -195,7 +195,7 @@ public class CustomCollectionTest extends AbstractFullDistribZkTestBase {
|
||||||
String url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), collectionName);
|
String url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), collectionName);
|
||||||
|
|
||||||
String shard_fld = "shard_s";
|
String shard_fld = "shard_s";
|
||||||
try (HttpSolrClient collectionClient = new HttpSolrClient(url)) {
|
try (HttpSolrClient collectionClient = getHttpSolrClient(url)) {
|
||||||
|
|
||||||
// lets try and use the solrj client to index a couple documents
|
// lets try and use the solrj client to index a couple documents
|
||||||
|
|
||||||
|
@ -292,12 +292,12 @@ public class CustomCollectionTest extends AbstractFullDistribZkTestBase {
|
||||||
url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), collectionName);
|
url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), collectionName);
|
||||||
}
|
}
|
||||||
|
|
||||||
try (HttpSolrClient collectionClient = new HttpSolrClient(url)) {
|
try (HttpSolrClient collectionClient = getHttpSolrClient(url)) {
|
||||||
// poll for a second - it can take a moment before we are ready to serve
|
// poll for a second - it can take a moment before we are ready to serve
|
||||||
waitForNon403or404or503(collectionClient);
|
waitForNon403or404or503(collectionClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
try (HttpSolrClient collectionClient = new HttpSolrClient(url)) {
|
try (HttpSolrClient collectionClient = getHttpSolrClient(url)) {
|
||||||
// lets try and use the solrj client to index a couple documents
|
// lets try and use the solrj client to index a couple documents
|
||||||
|
|
||||||
collectionClient.add(getDoc(id, 6, i1, -600, tlong, 600, t1,
|
collectionClient.add(getDoc(id, 6, i1, -600, tlong, 600, t1,
|
||||||
|
@ -343,13 +343,13 @@ public class CustomCollectionTest extends AbstractFullDistribZkTestBase {
|
||||||
|
|
||||||
String url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), collectionName);
|
String url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), collectionName);
|
||||||
|
|
||||||
try (HttpSolrClient collectionClient = new HttpSolrClient(url)) {
|
try (HttpSolrClient collectionClient = getHttpSolrClient(url)) {
|
||||||
// poll for a second - it can take a moment before we are ready to serve
|
// poll for a second - it can take a moment before we are ready to serve
|
||||||
waitForNon403or404or503(collectionClient);
|
waitForNon403or404or503(collectionClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
try (HttpSolrClient collectionClient = new HttpSolrClient(url)) {
|
try (HttpSolrClient collectionClient = getHttpSolrClient(url)) {
|
||||||
// lets try and use the solrj client to index a couple documents
|
// lets try and use the solrj client to index a couple documents
|
||||||
|
|
||||||
collectionClient.add(getDoc(id, 6, i1, -600, tlong, 600, t1,
|
collectionClient.add(getDoc(id, 6, i1, -600, tlong, 600, t1,
|
||||||
|
|
|
@ -128,7 +128,7 @@ public class DeleteInactiveReplicaTest extends AbstractFullDistribZkTestBase{
|
||||||
|
|
||||||
Map m = Utils.makeMap("qt", "/admin/cores", "action", "status");
|
Map m = Utils.makeMap("qt", "/admin/cores", "action", "status");
|
||||||
|
|
||||||
try (SolrClient queryClient = new HttpSolrClient(replica1.getStr(ZkStateReader.BASE_URL_PROP))) {
|
try (SolrClient queryClient = getHttpSolrClient(replica1.getStr(ZkStateReader.BASE_URL_PROP))) {
|
||||||
NamedList<Object> resp = queryClient.request(new QueryRequest(new MapSolrParams(m)));
|
NamedList<Object> resp = queryClient.request(new QueryRequest(new MapSolrParams(m)));
|
||||||
assertNull("The core is up and running again",
|
assertNull("The core is up and running again",
|
||||||
((NamedList) resp.get("status")).get(replica1.getStr("core")));
|
((NamedList) resp.get("status")).get(replica1.getStr("core")));
|
||||||
|
|
|
@ -97,7 +97,7 @@ public class DeleteReplicaTest extends AbstractFullDistribZkTestBase {
|
||||||
if (replica1 == null) fail("no active replicas found");
|
if (replica1 == null) fail("no active replicas found");
|
||||||
|
|
||||||
String dataDir = null;
|
String dataDir = null;
|
||||||
try (HttpSolrClient replica1Client = new HttpSolrClient(replica1.getStr("base_url"))) {
|
try (HttpSolrClient replica1Client = getHttpSolrClient(replica1.getStr("base_url"))) {
|
||||||
CoreAdminResponse status = CoreAdminRequest.getStatus(replica1.getStr("core"), replica1Client);
|
CoreAdminResponse status = CoreAdminRequest.getStatus(replica1.getStr("core"), replica1Client);
|
||||||
NamedList<Object> coreStatus = status.getCoreStatus(replica1.getStr("core"));
|
NamedList<Object> coreStatus = status.getCoreStatus(replica1.getStr("core"));
|
||||||
dataDir = (String) coreStatus.get("dataDir");
|
dataDir = (String) coreStatus.get("dataDir");
|
||||||
|
@ -186,7 +186,7 @@ public class DeleteReplicaTest extends AbstractFullDistribZkTestBase {
|
||||||
String instanceDir;
|
String instanceDir;
|
||||||
String dataDir;
|
String dataDir;
|
||||||
|
|
||||||
try (HttpSolrClient client = new HttpSolrClient(baseUrl)) {
|
try (HttpSolrClient client = getHttpSolrClient(baseUrl)) {
|
||||||
CoreAdminResponse statusResp = CoreAdminRequest.getStatus(core, client);
|
CoreAdminResponse statusResp = CoreAdminRequest.getStatus(core, client);
|
||||||
NamedList r = statusResp.getCoreStatus().get(core);
|
NamedList r = statusResp.getCoreStatus().get(core);
|
||||||
instanceDir = (String) r.findRecursive("instanceDir");
|
instanceDir = (String) r.findRecursive("instanceDir");
|
||||||
|
|
|
@ -121,7 +121,7 @@ public class DeleteShardTest extends AbstractFullDistribZkTestBase {
|
||||||
.getBaseURL();
|
.getBaseURL();
|
||||||
baseUrl = baseUrl.substring(0, baseUrl.length() - "collection1".length());
|
baseUrl = baseUrl.substring(0, baseUrl.length() - "collection1".length());
|
||||||
|
|
||||||
try (HttpSolrClient baseServer = new HttpSolrClient(baseUrl)) {
|
try (HttpSolrClient baseServer = getHttpSolrClient(baseUrl)) {
|
||||||
baseServer.setConnectionTimeout(15000);
|
baseServer.setConnectionTimeout(15000);
|
||||||
baseServer.setSoTimeout(60000);
|
baseServer.setSoTimeout(60000);
|
||||||
baseServer.request(request);
|
baseServer.request(request);
|
||||||
|
@ -173,7 +173,7 @@ public class DeleteShardTest extends AbstractFullDistribZkTestBase {
|
||||||
String instanceDir;
|
String instanceDir;
|
||||||
String dataDir;
|
String dataDir;
|
||||||
|
|
||||||
try (HttpSolrClient client = new HttpSolrClient(baseUrl)) {
|
try (HttpSolrClient client = getHttpSolrClient(baseUrl)) {
|
||||||
CoreAdminResponse statusResp = CoreAdminRequest.getStatus(core, client);
|
CoreAdminResponse statusResp = CoreAdminRequest.getStatus(core, client);
|
||||||
NamedList r = statusResp.getCoreStatus().get(core);
|
NamedList r = statusResp.getCoreStatus().get(core);
|
||||||
instanceDir = (String) r.findRecursive("instanceDir");
|
instanceDir = (String) r.findRecursive("instanceDir");
|
||||||
|
@ -199,7 +199,7 @@ public class DeleteShardTest extends AbstractFullDistribZkTestBase {
|
||||||
baseUrl = (String) leader.get("base_url");
|
baseUrl = (String) leader.get("base_url");
|
||||||
core = (String) leader.get("core");
|
core = (String) leader.get("core");
|
||||||
|
|
||||||
try (HttpSolrClient client = new HttpSolrClient(baseUrl)) {
|
try (HttpSolrClient client = getHttpSolrClient(baseUrl)) {
|
||||||
CoreAdminResponse statusResp = CoreAdminRequest.getStatus(core, client);
|
CoreAdminResponse statusResp = CoreAdminRequest.getStatus(core, client);
|
||||||
NamedList r = statusResp.getCoreStatus().get(core);
|
NamedList r = statusResp.getCoreStatus().get(core);
|
||||||
instanceDir = (String) r.findRecursive("instanceDir");
|
instanceDir = (String) r.findRecursive("instanceDir");
|
||||||
|
|
|
@ -105,7 +105,7 @@ public class DistributedVersionInfoTest extends AbstractFullDistribZkTestBase {
|
||||||
assertEquals("leader and replica should have same max version: " + maxOnLeader, maxOnLeader, maxOnReplica);
|
assertEquals("leader and replica should have same max version: " + maxOnLeader, maxOnLeader, maxOnReplica);
|
||||||
|
|
||||||
// send the same doc but with a lower version than the max in the index
|
// send the same doc but with a lower version than the max in the index
|
||||||
try (SolrClient client = new HttpSolrClient(replica.getCoreUrl())) {
|
try (SolrClient client = getHttpSolrClient(replica.getCoreUrl())) {
|
||||||
String docId = String.valueOf(1);
|
String docId = String.valueOf(1);
|
||||||
SolrInputDocument doc = new SolrInputDocument();
|
SolrInputDocument doc = new SolrInputDocument();
|
||||||
doc.setField(id, docId);
|
doc.setField(id, docId);
|
||||||
|
@ -276,7 +276,7 @@ public class DistributedVersionInfoTest extends AbstractFullDistribZkTestBase {
|
||||||
query.addSort(new SolrQuery.SortClause("_version_", SolrQuery.ORDER.desc));
|
query.addSort(new SolrQuery.SortClause("_version_", SolrQuery.ORDER.desc));
|
||||||
query.setParam("distrib", false);
|
query.setParam("distrib", false);
|
||||||
|
|
||||||
try (SolrClient client = new HttpSolrClient(replica.getCoreUrl())) {
|
try (SolrClient client = getHttpSolrClient(replica.getCoreUrl())) {
|
||||||
QueryResponse qr = client.query(query);
|
QueryResponse qr = client.query(query);
|
||||||
SolrDocumentList hits = qr.getResults();
|
SolrDocumentList hits = qr.getResults();
|
||||||
if (hits.isEmpty())
|
if (hits.isEmpty())
|
||||||
|
@ -343,7 +343,7 @@ public class DistributedVersionInfoTest extends AbstractFullDistribZkTestBase {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected HttpSolrClient getHttpSolrClient(Replica replica) throws Exception {
|
protected HttpSolrClient getHttpSolrClient(Replica replica) throws Exception {
|
||||||
return new HttpSolrClient(replica.getCoreUrl());
|
return getHttpSolrClient(replica.getCoreUrl());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void sendDoc(int docId) throws Exception {
|
protected void sendDoc(int docId) throws Exception {
|
||||||
|
@ -378,7 +378,7 @@ public class DistributedVersionInfoTest extends AbstractFullDistribZkTestBase {
|
||||||
ZkCoreNodeProps coreProps = new ZkCoreNodeProps(replica);
|
ZkCoreNodeProps coreProps = new ZkCoreNodeProps(replica);
|
||||||
String coreName = coreProps.getCoreName();
|
String coreName = coreProps.getCoreName();
|
||||||
boolean reloadedOk = false;
|
boolean reloadedOk = false;
|
||||||
try (HttpSolrClient client = new HttpSolrClient(coreProps.getBaseUrl())) {
|
try (HttpSolrClient client = getHttpSolrClient(coreProps.getBaseUrl())) {
|
||||||
CoreAdminResponse statusResp = CoreAdminRequest.getStatus(coreName, client);
|
CoreAdminResponse statusResp = CoreAdminRequest.getStatus(coreName, client);
|
||||||
long leaderCoreStartTime = statusResp.getStartTime(coreName).getTime();
|
long leaderCoreStartTime = statusResp.getStartTime(coreName).getTime();
|
||||||
|
|
||||||
|
|
|
@ -301,7 +301,7 @@ public class ForceLeaderTest extends HttpPartitionTest {
|
||||||
|
|
||||||
SolrRequest<SimpleSolrResponse> req = new GenericSolrRequest(METHOD.GET, "/admin/cores", params);
|
SolrRequest<SimpleSolrResponse> req = new GenericSolrRequest(METHOD.GET, "/admin/cores", params);
|
||||||
NamedList resp = null;
|
NamedList resp = null;
|
||||||
try (HttpSolrClient hsc = new HttpSolrClient(baseUrl)) {
|
try (HttpSolrClient hsc = getHttpSolrClient(baseUrl)) {
|
||||||
resp = hsc.request(req);
|
resp = hsc.request(req);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -698,7 +698,7 @@ public class FullSolrCloudDistribCmdsTest extends AbstractFullDistribZkTestBase
|
||||||
QueryResponse results = query(cloudClient);
|
QueryResponse results = query(cloudClient);
|
||||||
long beforeCount = results.getResults().getNumFound();
|
long beforeCount = results.getResults().getNumFound();
|
||||||
int cnt = TEST_NIGHTLY ? 2933 : 313;
|
int cnt = TEST_NIGHTLY ? 2933 : 313;
|
||||||
try (ConcurrentUpdateSolrClient concurrentClient = new ConcurrentUpdateSolrClient(
|
try (ConcurrentUpdateSolrClient concurrentClient = getConcurrentUpdateSolrClient(
|
||||||
((HttpSolrClient) clients.get(0)).getBaseURL(), 10, 2)) {
|
((HttpSolrClient) clients.get(0)).getBaseURL(), 10, 2)) {
|
||||||
concurrentClient.setConnectionTimeout(120000);
|
concurrentClient.setConnectionTimeout(120000);
|
||||||
for (int i = 0; i < cnt; i++) {
|
for (int i = 0; i < cnt; i++) {
|
||||||
|
|
|
@ -588,7 +588,7 @@ public class HttpPartitionTest extends AbstractFullDistribZkTestBase {
|
||||||
protected HttpSolrClient getHttpSolrClient(Replica replica, String coll) throws Exception {
|
protected HttpSolrClient getHttpSolrClient(Replica replica, String coll) throws Exception {
|
||||||
ZkCoreNodeProps zkProps = new ZkCoreNodeProps(replica);
|
ZkCoreNodeProps zkProps = new ZkCoreNodeProps(replica);
|
||||||
String url = zkProps.getBaseUrl() + "/" + coll;
|
String url = zkProps.getBaseUrl() + "/" + coll;
|
||||||
return new HttpSolrClient(url);
|
return getHttpSolrClient(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int sendDoc(int docId) throws Exception {
|
protected int sendDoc(int docId) throws Exception {
|
||||||
|
|
|
@ -163,7 +163,7 @@ public class LeaderInitiatedRecoveryOnCommitTest extends BasicDistributedZkTest
|
||||||
String replicaCoreUrl = replica.getCoreUrl();
|
String replicaCoreUrl = replica.getCoreUrl();
|
||||||
log.info("Sending commit request to: "+replicaCoreUrl);
|
log.info("Sending commit request to: "+replicaCoreUrl);
|
||||||
final RTimer timer = new RTimer();
|
final RTimer timer = new RTimer();
|
||||||
try (HttpSolrClient client = new HttpSolrClient(replicaCoreUrl)) {
|
try (HttpSolrClient client = getHttpSolrClient(replicaCoreUrl)) {
|
||||||
try {
|
try {
|
||||||
client.commit();
|
client.commit();
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ public class LeaderInitiatedRecoveryOnShardRestartTest extends AbstractFullDistr
|
||||||
QueryRequest request = new QueryRequest(params);
|
QueryRequest request = new QueryRequest(params);
|
||||||
request.setPath("/admin/collections");
|
request.setPath("/admin/collections");
|
||||||
String baseUrl = ((HttpSolrClient) clients.get(0)).getBaseURL();
|
String baseUrl = ((HttpSolrClient) clients.get(0)).getBaseURL();
|
||||||
HttpSolrClient delClient = new HttpSolrClient(baseUrl.substring(0, baseUrl.lastIndexOf("/")));
|
HttpSolrClient delClient = getHttpSolrClient(baseUrl.substring(0, baseUrl.lastIndexOf("/")));
|
||||||
delClient.request(request);
|
delClient.request(request);
|
||||||
delClient.close();
|
delClient.close();
|
||||||
|
|
||||||
|
|
|
@ -106,7 +106,7 @@ public class MigrateRouteKeyTest extends BasicDistributedZkTest {
|
||||||
.getBaseURL();
|
.getBaseURL();
|
||||||
baseUrl = baseUrl.substring(0, baseUrl.length() - "collection1".length());
|
baseUrl = baseUrl.substring(0, baseUrl.length() - "collection1".length());
|
||||||
|
|
||||||
try (HttpSolrClient baseClient = new HttpSolrClient(baseUrl)) {
|
try (HttpSolrClient baseClient = getHttpSolrClient(baseUrl)) {
|
||||||
baseClient.setConnectionTimeout(15000);
|
baseClient.setConnectionTimeout(15000);
|
||||||
baseClient.setSoTimeout(60000 * 5);
|
baseClient.setSoTimeout(60000 * 5);
|
||||||
baseClient.request(request);
|
baseClient.request(request);
|
||||||
|
@ -161,7 +161,7 @@ public class MigrateRouteKeyTest extends BasicDistributedZkTest {
|
||||||
|
|
||||||
String url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), targetCollection);
|
String url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), targetCollection);
|
||||||
|
|
||||||
try (HttpSolrClient collectionClient = new HttpSolrClient(url)) {
|
try (HttpSolrClient collectionClient = getHttpSolrClient(url)) {
|
||||||
|
|
||||||
SolrQuery solrQuery = new SolrQuery("*:*");
|
SolrQuery solrQuery = new SolrQuery("*:*");
|
||||||
assertEquals("DocCount on target collection does not match", 0, collectionClient.query(solrQuery).getResults().getNumFound());
|
assertEquals("DocCount on target collection does not match", 0, collectionClient.query(solrQuery).getResults().getNumFound());
|
||||||
|
|
|
@ -179,7 +179,7 @@ public class ReplicationFactorTest extends AbstractFullDistribZkTestBase {
|
||||||
ZkCoreNodeProps zkProps = new ZkCoreNodeProps(replica);
|
ZkCoreNodeProps zkProps = new ZkCoreNodeProps(replica);
|
||||||
String url = zkProps.getBaseUrl() + "/" + collection;
|
String url = zkProps.getBaseUrl() + "/" + collection;
|
||||||
|
|
||||||
try (HttpSolrClient solrServer = new HttpSolrClient(url)) {
|
try (HttpSolrClient solrServer = getHttpSolrClient(url)) {
|
||||||
NamedList resp = solrServer.request(up);
|
NamedList resp = solrServer.request(up);
|
||||||
NamedList hdr = (NamedList) resp.get("responseHeader");
|
NamedList hdr = (NamedList) resp.get("responseHeader");
|
||||||
Integer batchRf = (Integer)hdr.get(UpdateRequest.REPFACT);
|
Integer batchRf = (Integer)hdr.get(UpdateRequest.REPFACT);
|
||||||
|
|
|
@ -130,7 +130,7 @@ public class SSLMigrationTest extends AbstractFullDistribZkTestBase {
|
||||||
urls.add(replica.getStr(ZkStateReader.BASE_URL_PROP));
|
urls.add(replica.getStr(ZkStateReader.BASE_URL_PROP));
|
||||||
}
|
}
|
||||||
//Create new SolrServer to configure new HttpClient w/ SSL config
|
//Create new SolrServer to configure new HttpClient w/ SSL config
|
||||||
new LBHttpSolrClient(urls.toArray(new String[]{})).request(request);
|
getLBHttpSolrClient(urls.toArray(new String[]{})).request(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,16 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.solr.cloud;
|
package org.apache.solr.cloud;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.lang.invoke.MethodHandles;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.apache.http.params.CoreConnectionPNames;
|
import org.apache.http.params.CoreConnectionPNames;
|
||||||
import org.apache.lucene.util.LuceneTestCase.Slow;
|
import org.apache.lucene.util.LuceneTestCase.Slow;
|
||||||
import org.apache.solr.client.solrj.SolrClient;
|
import org.apache.solr.client.solrj.SolrClient;
|
||||||
|
@ -44,16 +54,6 @@ import org.junit.Test;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.lang.invoke.MethodHandles;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Random;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import static org.apache.solr.cloud.OverseerCollectionMessageHandler.NUM_SLICES;
|
import static org.apache.solr.cloud.OverseerCollectionMessageHandler.NUM_SLICES;
|
||||||
import static org.apache.solr.common.cloud.ZkStateReader.MAX_SHARDS_PER_NODE;
|
import static org.apache.solr.common.cloud.ZkStateReader.MAX_SHARDS_PER_NODE;
|
||||||
import static org.apache.solr.common.cloud.ZkStateReader.REPLICATION_FACTOR;
|
import static org.apache.solr.common.cloud.ZkStateReader.REPLICATION_FACTOR;
|
||||||
|
@ -274,7 +274,7 @@ public class ShardSplitTest extends BasicDistributedZkTest {
|
||||||
|
|
||||||
String url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), collectionName);
|
String url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), collectionName);
|
||||||
|
|
||||||
try (HttpSolrClient collectionClient = new HttpSolrClient(url)) {
|
try (HttpSolrClient collectionClient = getHttpSolrClient(url)) {
|
||||||
|
|
||||||
ClusterState clusterState = cloudClient.getZkStateReader().getClusterState();
|
ClusterState clusterState = cloudClient.getZkStateReader().getClusterState();
|
||||||
final DocRouter router = clusterState.getCollection(collectionName).getRouter();
|
final DocRouter router = clusterState.getCollection(collectionName).getRouter();
|
||||||
|
@ -348,7 +348,7 @@ public class ShardSplitTest extends BasicDistributedZkTest {
|
||||||
|
|
||||||
String url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), collectionName);
|
String url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), collectionName);
|
||||||
|
|
||||||
try (HttpSolrClient collectionClient = new HttpSolrClient(url)) {
|
try (HttpSolrClient collectionClient = getHttpSolrClient(url)) {
|
||||||
|
|
||||||
String splitKey = "b!";
|
String splitKey = "b!";
|
||||||
|
|
||||||
|
@ -445,7 +445,7 @@ public class ShardSplitTest extends BasicDistributedZkTest {
|
||||||
|
|
||||||
ZkCoreNodeProps shard1_0 = getLeaderUrlFromZk(AbstractDistribZkTestBase.DEFAULT_COLLECTION, SHARD1_0);
|
ZkCoreNodeProps shard1_0 = getLeaderUrlFromZk(AbstractDistribZkTestBase.DEFAULT_COLLECTION, SHARD1_0);
|
||||||
QueryResponse response;
|
QueryResponse response;
|
||||||
try (HttpSolrClient shard1_0Client = new HttpSolrClient(shard1_0.getCoreUrl())) {
|
try (HttpSolrClient shard1_0Client = getHttpSolrClient(shard1_0.getCoreUrl())) {
|
||||||
response = shard1_0Client.query(query);
|
response = shard1_0Client.query(query);
|
||||||
}
|
}
|
||||||
long shard10Count = response.getResults().getNumFound();
|
long shard10Count = response.getResults().getNumFound();
|
||||||
|
@ -453,7 +453,7 @@ public class ShardSplitTest extends BasicDistributedZkTest {
|
||||||
ZkCoreNodeProps shard1_1 = getLeaderUrlFromZk(
|
ZkCoreNodeProps shard1_1 = getLeaderUrlFromZk(
|
||||||
AbstractDistribZkTestBase.DEFAULT_COLLECTION, SHARD1_1);
|
AbstractDistribZkTestBase.DEFAULT_COLLECTION, SHARD1_1);
|
||||||
QueryResponse response2;
|
QueryResponse response2;
|
||||||
try (HttpSolrClient shard1_1Client = new HttpSolrClient(shard1_1.getCoreUrl())) {
|
try (HttpSolrClient shard1_1Client = getHttpSolrClient(shard1_1.getCoreUrl())) {
|
||||||
response2 = shard1_1Client.query(query);
|
response2 = shard1_1Client.query(query);
|
||||||
}
|
}
|
||||||
long shard11Count = response2.getResults().getNumFound();
|
long shard11Count = response2.getResults().getNumFound();
|
||||||
|
@ -475,7 +475,7 @@ public class ShardSplitTest extends BasicDistributedZkTest {
|
||||||
for (Replica replica : slice.getReplicas()) {
|
for (Replica replica : slice.getReplicas()) {
|
||||||
String coreUrl = new ZkCoreNodeProps(replica).getCoreUrl();
|
String coreUrl = new ZkCoreNodeProps(replica).getCoreUrl();
|
||||||
QueryResponse response;
|
QueryResponse response;
|
||||||
try (HttpSolrClient client = new HttpSolrClient(coreUrl)) {
|
try (HttpSolrClient client = getHttpSolrClient(coreUrl)) {
|
||||||
response = client.query(query);
|
response = client.query(query);
|
||||||
}
|
}
|
||||||
numFound[c++] = response.getResults().getNumFound();
|
numFound[c++] = response.getResults().getNumFound();
|
||||||
|
@ -514,7 +514,7 @@ public class ShardSplitTest extends BasicDistributedZkTest {
|
||||||
.getBaseURL();
|
.getBaseURL();
|
||||||
baseUrl = baseUrl.substring(0, baseUrl.length() - "collection1".length());
|
baseUrl = baseUrl.substring(0, baseUrl.length() - "collection1".length());
|
||||||
|
|
||||||
try (HttpSolrClient baseServer = new HttpSolrClient(baseUrl)) {
|
try (HttpSolrClient baseServer = getHttpSolrClient(baseUrl)) {
|
||||||
baseServer.setConnectionTimeout(30000);
|
baseServer.setConnectionTimeout(30000);
|
||||||
baseServer.setSoTimeout(60000 * 5);
|
baseServer.setSoTimeout(60000 * 5);
|
||||||
baseServer.request(request);
|
baseServer.request(request);
|
||||||
|
|
|
@ -110,7 +110,7 @@ public class SyncSliceTest extends AbstractFullDistribZkTestBase {
|
||||||
.getBaseURL();
|
.getBaseURL();
|
||||||
baseUrl = baseUrl.substring(0, baseUrl.length() - "collection1".length());
|
baseUrl = baseUrl.substring(0, baseUrl.length() - "collection1".length());
|
||||||
|
|
||||||
try (HttpSolrClient baseClient = new HttpSolrClient(baseUrl)) {
|
try (HttpSolrClient baseClient = getHttpSolrClient(baseUrl)) {
|
||||||
// we only set the connect timeout, not so timeout
|
// we only set the connect timeout, not so timeout
|
||||||
baseClient.setConnectionTimeout(30000);
|
baseClient.setConnectionTimeout(30000);
|
||||||
baseClient.request(request);
|
baseClient.request(request);
|
||||||
|
|
|
@ -145,17 +145,17 @@ public class TestCloudDeleteByQuery extends SolrCloudTestCase {
|
||||||
assertNotNull("could not find URL for " + shardName + " replica", passiveUrl);
|
assertNotNull("could not find URL for " + shardName + " replica", passiveUrl);
|
||||||
|
|
||||||
if (shardName.equals("shard1")) {
|
if (shardName.equals("shard1")) {
|
||||||
S_ONE_LEADER_CLIENT = new HttpSolrClient(leaderUrl + "/" + COLLECTION_NAME + "/");
|
S_ONE_LEADER_CLIENT = getHttpSolrClient(leaderUrl + "/" + COLLECTION_NAME + "/");
|
||||||
S_ONE_NON_LEADER_CLIENT = new HttpSolrClient(passiveUrl + "/" + COLLECTION_NAME + "/");
|
S_ONE_NON_LEADER_CLIENT = getHttpSolrClient(passiveUrl + "/" + COLLECTION_NAME + "/");
|
||||||
} else if (shardName.equals("shard2")) {
|
} else if (shardName.equals("shard2")) {
|
||||||
S_TWO_LEADER_CLIENT = new HttpSolrClient(leaderUrl + "/" + COLLECTION_NAME + "/");
|
S_TWO_LEADER_CLIENT = getHttpSolrClient(leaderUrl + "/" + COLLECTION_NAME + "/");
|
||||||
S_TWO_NON_LEADER_CLIENT = new HttpSolrClient(passiveUrl + "/" + COLLECTION_NAME + "/");
|
S_TWO_NON_LEADER_CLIENT = getHttpSolrClient(passiveUrl + "/" + COLLECTION_NAME + "/");
|
||||||
} else {
|
} else {
|
||||||
fail("unexpected shard: " + shardName);
|
fail("unexpected shard: " + shardName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assertEquals("Should be exactly one server left (nost hosting either shard)", 1, urlMap.size());
|
assertEquals("Should be exactly one server left (nost hosting either shard)", 1, urlMap.size());
|
||||||
NO_COLLECTION_CLIENT = new HttpSolrClient(urlMap.values().iterator().next() +
|
NO_COLLECTION_CLIENT = getHttpSolrClient(urlMap.values().iterator().next() +
|
||||||
"/" + COLLECTION_NAME + "/");
|
"/" + COLLECTION_NAME + "/");
|
||||||
|
|
||||||
assertNotNull(S_ONE_LEADER_CLIENT);
|
assertNotNull(S_ONE_LEADER_CLIENT);
|
||||||
|
|
|
@ -79,8 +79,8 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCreateErrors() throws Exception {
|
public void testCreateErrors() throws Exception {
|
||||||
final SolrClient solrClient =
|
final String baseUrl = solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString();
|
||||||
new HttpSolrClient(solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString());
|
final SolrClient solrClient = getHttpSolrClient(baseUrl);
|
||||||
final File configDir = getFile("solr").toPath().resolve("configsets/configset-2/conf").toFile();
|
final File configDir = getFile("solr").toPath().resolve("configsets/configset-2/conf").toFile();
|
||||||
solrCluster.uploadConfigDir(configDir, "configSet");
|
solrCluster.uploadConfigDir(configDir, "configSet");
|
||||||
|
|
||||||
|
@ -143,8 +143,8 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 {
|
||||||
|
|
||||||
private void verifyCreate(String baseConfigSetName, String configSetName,
|
private void verifyCreate(String baseConfigSetName, String configSetName,
|
||||||
Map<String, String> oldProps, Map<String, String> newProps) throws Exception {
|
Map<String, String> oldProps, Map<String, String> newProps) throws Exception {
|
||||||
final SolrClient solrClient =
|
final String baseUrl = solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString();
|
||||||
new HttpSolrClient(solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString());
|
final SolrClient solrClient = getHttpSolrClient(baseUrl);
|
||||||
setupBaseConfigSet(baseConfigSetName, oldProps);
|
setupBaseConfigSet(baseConfigSetName, oldProps);
|
||||||
|
|
||||||
SolrZkClient zkClient = new SolrZkClient(solrCluster.getZkServer().getZkAddress(),
|
SolrZkClient zkClient = new SolrZkClient(solrCluster.getZkServer().getZkAddress(),
|
||||||
|
@ -235,8 +235,8 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDeleteErrors() throws Exception {
|
public void testDeleteErrors() throws Exception {
|
||||||
final SolrClient solrClient =
|
final String baseUrl = solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString();
|
||||||
new HttpSolrClient(solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString());
|
final SolrClient solrClient = getHttpSolrClient(baseUrl);
|
||||||
final File configDir = getFile("solr").toPath().resolve("configsets/configset-2/conf").toFile();
|
final File configDir = getFile("solr").toPath().resolve("configsets/configset-2/conf").toFile();
|
||||||
final File tmpConfigDir = createTempDir().toFile();
|
final File tmpConfigDir = createTempDir().toFile();
|
||||||
tmpConfigDir.deleteOnExit();
|
tmpConfigDir.deleteOnExit();
|
||||||
|
@ -274,8 +274,8 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDelete() throws Exception {
|
public void testDelete() throws Exception {
|
||||||
final SolrClient solrClient =
|
final String baseUrl = solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString();
|
||||||
new HttpSolrClient(solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString());
|
final SolrClient solrClient = getHttpSolrClient(baseUrl);
|
||||||
final File configDir = getFile("solr").toPath().resolve("configsets/configset-2/conf").toFile();
|
final File configDir = getFile("solr").toPath().resolve("configsets/configset-2/conf").toFile();
|
||||||
final String configSet = "configSet";
|
final String configSet = "configSet";
|
||||||
solrCluster.uploadConfigDir(configDir, configSet);
|
solrCluster.uploadConfigDir(configDir, configSet);
|
||||||
|
@ -300,8 +300,8 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testList() throws Exception {
|
public void testList() throws Exception {
|
||||||
final SolrClient solrClient =
|
final String baseUrl = solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString();
|
||||||
new HttpSolrClient(solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString());
|
final SolrClient solrClient = getHttpSolrClient(baseUrl);
|
||||||
|
|
||||||
SolrZkClient zkClient = new SolrZkClient(solrCluster.getZkServer().getZkAddress(),
|
SolrZkClient zkClient = new SolrZkClient(solrCluster.getZkServer().getZkAddress(),
|
||||||
AbstractZkTestCase.TIMEOUT, AbstractZkTestCase.TIMEOUT, null);
|
AbstractZkTestCase.TIMEOUT, AbstractZkTestCase.TIMEOUT, null);
|
||||||
|
|
|
@ -121,8 +121,8 @@ public class TestConfigSetsAPIExclusivity extends SolrTestCaseJ4 {
|
||||||
public abstract ConfigSetAdminRequest createRequest();
|
public abstract ConfigSetAdminRequest createRequest();
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
final SolrClient solrClient =
|
final String baseUrl = solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString();
|
||||||
new HttpSolrClient(solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString());
|
final SolrClient solrClient = getHttpSolrClient(baseUrl);
|
||||||
ConfigSetAdminRequest request = createRequest();
|
ConfigSetAdminRequest request = createRequest();
|
||||||
|
|
||||||
for (int i = 0; i < trials; ++i) {
|
for (int i = 0; i < trials; ++i) {
|
||||||
|
|
|
@ -99,8 +99,8 @@ public class TestConfigSetsAPIZkFailure extends SolrTestCaseJ4 {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCreateZkFailure() throws Exception {
|
public void testCreateZkFailure() throws Exception {
|
||||||
final SolrClient solrClient =
|
final String baseUrl = solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString();
|
||||||
new HttpSolrClient(solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString());
|
final SolrClient solrClient = getHttpSolrClient(baseUrl);
|
||||||
|
|
||||||
final Map<String, String> oldProps = ImmutableMap.of("immutable", "true");
|
final Map<String, String> oldProps = ImmutableMap.of("immutable", "true");
|
||||||
setupBaseConfigSet(BASE_CONFIGSET_NAME, oldProps);
|
setupBaseConfigSet(BASE_CONFIGSET_NAME, oldProps);
|
||||||
|
|
|
@ -119,7 +119,7 @@ public class TestCryptoKeys extends AbstractFullDistribZkTestBase {
|
||||||
String baseURL = randomClient.getBaseURL();
|
String baseURL = randomClient.getBaseURL();
|
||||||
baseURL = baseURL.substring(0, baseURL.lastIndexOf('/'));
|
baseURL = baseURL.substring(0, baseURL.lastIndexOf('/'));
|
||||||
|
|
||||||
TestBlobHandler.createSystemCollection(new HttpSolrClient(baseURL, randomClient.getHttpClient()));
|
TestBlobHandler.createSystemCollection(getHttpSolrClient(baseURL, randomClient.getHttpClient()));
|
||||||
waitForRecoveriesToFinish(".system", true);
|
waitForRecoveriesToFinish(".system", true);
|
||||||
|
|
||||||
ByteBuffer jar = TestDynamicLoading.getFileContent("runtimecode/runtimelibs.jar.bin");
|
ByteBuffer jar = TestDynamicLoading.getFileContent("runtimecode/runtimelibs.jar.bin");
|
||||||
|
|
|
@ -74,7 +74,7 @@ public class TestMiniSolrCloudClusterSSL extends SolrTestCaseJ4 {
|
||||||
private void sendRequestToEachServer() throws Exception {
|
private void sendRequestToEachServer() throws Exception {
|
||||||
List<JettySolrRunner> jettys = miniCluster.getJettySolrRunners();
|
List<JettySolrRunner> jettys = miniCluster.getJettySolrRunners();
|
||||||
for (JettySolrRunner jetty : jettys) {
|
for (JettySolrRunner jetty : jettys) {
|
||||||
try (HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString())) {
|
try (HttpSolrClient client = getHttpSolrClient(jetty.getBaseUrl().toString())) {
|
||||||
CoreAdminRequest req = new CoreAdminRequest();
|
CoreAdminRequest req = new CoreAdminRequest();
|
||||||
req.setAction( CoreAdminAction.STATUS );
|
req.setAction( CoreAdminAction.STATUS );
|
||||||
client.request(req);
|
client.request(req);
|
||||||
|
|
|
@ -96,7 +96,7 @@ public class TestRandomRequestDistribution extends AbstractFullDistribZkTestBase
|
||||||
assertEquals(1, replicas.size());
|
assertEquals(1, replicas.size());
|
||||||
String baseUrl = replicas.iterator().next().getStr(ZkStateReader.BASE_URL_PROP);
|
String baseUrl = replicas.iterator().next().getStr(ZkStateReader.BASE_URL_PROP);
|
||||||
if (!baseUrl.endsWith("/")) baseUrl += "/";
|
if (!baseUrl.endsWith("/")) baseUrl += "/";
|
||||||
HttpSolrClient client = new HttpSolrClient(baseUrl + "a1x2");
|
HttpSolrClient client = getHttpSolrClient(baseUrl + "a1x2");
|
||||||
client.setSoTimeout(5000);
|
client.setSoTimeout(5000);
|
||||||
client.setConnectionTimeout(2000);
|
client.setConnectionTimeout(2000);
|
||||||
|
|
||||||
|
@ -173,7 +173,7 @@ public class TestRandomRequestDistribution extends AbstractFullDistribZkTestBase
|
||||||
if (!baseUrl.endsWith("/")) baseUrl += "/";
|
if (!baseUrl.endsWith("/")) baseUrl += "/";
|
||||||
String path = baseUrl + "football";
|
String path = baseUrl + "football";
|
||||||
log.info("Firing queries against path=" + path);
|
log.info("Firing queries against path=" + path);
|
||||||
HttpSolrClient client = new HttpSolrClient(path);
|
HttpSolrClient client = getHttpSolrClient(path);
|
||||||
client.setSoTimeout(5000);
|
client.setSoTimeout(5000);
|
||||||
client.setConnectionTimeout(2000);
|
client.setConnectionTimeout(2000);
|
||||||
|
|
||||||
|
|
|
@ -189,7 +189,7 @@ public class TestRequestStatusCollectionAPI extends BasicDistributedZkTest {
|
||||||
String baseUrl = ((HttpSolrClient) shardToJetty.get(SHARD1).get(0).client.solrClient).getBaseURL();
|
String baseUrl = ((HttpSolrClient) shardToJetty.get(SHARD1).get(0).client.solrClient).getBaseURL();
|
||||||
baseUrl = baseUrl.substring(0, baseUrl.length() - "collection1".length());
|
baseUrl = baseUrl.substring(0, baseUrl.length() - "collection1".length());
|
||||||
|
|
||||||
try (HttpSolrClient baseServer = new HttpSolrClient(baseUrl)) {
|
try (HttpSolrClient baseServer = getHttpSolrClient(baseUrl)) {
|
||||||
baseServer.setConnectionTimeout(15000);
|
baseServer.setConnectionTimeout(15000);
|
||||||
return baseServer.request(request);
|
return baseServer.request(request);
|
||||||
}
|
}
|
||||||
|
|
|
@ -162,17 +162,17 @@ public class TestTolerantUpdateProcessorCloud extends SolrCloudTestCase {
|
||||||
assertNotNull("could not find URL for " + shardName + " replica", passiveUrl);
|
assertNotNull("could not find URL for " + shardName + " replica", passiveUrl);
|
||||||
|
|
||||||
if (shardName.equals("shard1")) {
|
if (shardName.equals("shard1")) {
|
||||||
S_ONE_LEADER_CLIENT = new HttpSolrClient(leaderUrl + "/" + COLLECTION_NAME + "/");
|
S_ONE_LEADER_CLIENT = getHttpSolrClient(leaderUrl + "/" + COLLECTION_NAME + "/");
|
||||||
S_ONE_NON_LEADER_CLIENT = new HttpSolrClient(passiveUrl + "/" + COLLECTION_NAME + "/");
|
S_ONE_NON_LEADER_CLIENT = getHttpSolrClient(passiveUrl + "/" + COLLECTION_NAME + "/");
|
||||||
} else if (shardName.equals("shard2")) {
|
} else if (shardName.equals("shard2")) {
|
||||||
S_TWO_LEADER_CLIENT = new HttpSolrClient(leaderUrl + "/" + COLLECTION_NAME + "/");
|
S_TWO_LEADER_CLIENT = getHttpSolrClient(leaderUrl + "/" + COLLECTION_NAME + "/");
|
||||||
S_TWO_NON_LEADER_CLIENT = new HttpSolrClient(passiveUrl + "/" + COLLECTION_NAME + "/");
|
S_TWO_NON_LEADER_CLIENT = getHttpSolrClient(passiveUrl + "/" + COLLECTION_NAME + "/");
|
||||||
} else {
|
} else {
|
||||||
fail("unexpected shard: " + shardName);
|
fail("unexpected shard: " + shardName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assertEquals("Should be exactly one server left (nost hosting either shard)", 1, urlMap.size());
|
assertEquals("Should be exactly one server left (nost hosting either shard)", 1, urlMap.size());
|
||||||
NO_COLLECTION_CLIENT = new HttpSolrClient(urlMap.values().iterator().next() +
|
NO_COLLECTION_CLIENT = getHttpSolrClient(urlMap.values().iterator().next() +
|
||||||
"/" + COLLECTION_NAME + "/");
|
"/" + COLLECTION_NAME + "/");
|
||||||
|
|
||||||
assertNotNull(S_ONE_LEADER_CLIENT);
|
assertNotNull(S_ONE_LEADER_CLIENT);
|
||||||
|
|
|
@ -127,7 +127,7 @@ public class TestTolerantUpdateProcessorRandomCloud extends SolrCloudTestCase {
|
||||||
|
|
||||||
for (JettySolrRunner jetty : cluster.getJettySolrRunners()) {
|
for (JettySolrRunner jetty : cluster.getJettySolrRunners()) {
|
||||||
URL jettyURL = jetty.getBaseUrl();
|
URL jettyURL = jetty.getBaseUrl();
|
||||||
NODE_CLIENTS.add(new HttpSolrClient(jettyURL.toString() + "/" + COLLECTION_NAME + "/"));
|
NODE_CLIENTS.add(getHttpSolrClient(jettyURL.toString() + "/" + COLLECTION_NAME + "/"));
|
||||||
}
|
}
|
||||||
assertEquals(numServers, NODE_CLIENTS.size());
|
assertEquals(numServers, NODE_CLIENTS.size());
|
||||||
|
|
||||||
|
|
|
@ -123,7 +123,7 @@ public class UnloadDistributedZkTest extends BasicDistributedZkTest {
|
||||||
SolrClient client = clients.get(0);
|
SolrClient client = clients.get(0);
|
||||||
String url1 = getBaseUrl(client);
|
String url1 = getBaseUrl(client);
|
||||||
|
|
||||||
try (HttpSolrClient adminClient = new HttpSolrClient(url1)) {
|
try (HttpSolrClient adminClient = getHttpSolrClient(url1)) {
|
||||||
adminClient.setConnectionTimeout(15000);
|
adminClient.setConnectionTimeout(15000);
|
||||||
adminClient.setSoTimeout(60000);
|
adminClient.setSoTimeout(60000);
|
||||||
adminClient.request(createCmd);
|
adminClient.request(createCmd);
|
||||||
|
@ -174,7 +174,7 @@ public class UnloadDistributedZkTest extends BasicDistributedZkTest {
|
||||||
// create a new collection collection
|
// create a new collection collection
|
||||||
SolrClient client = clients.get(0);
|
SolrClient client = clients.get(0);
|
||||||
String url1 = getBaseUrl(client);
|
String url1 = getBaseUrl(client);
|
||||||
try (HttpSolrClient adminClient = new HttpSolrClient(url1)) {
|
try (HttpSolrClient adminClient = getHttpSolrClient(url1)) {
|
||||||
adminClient.setConnectionTimeout(15000);
|
adminClient.setConnectionTimeout(15000);
|
||||||
adminClient.setSoTimeout(60000);
|
adminClient.setSoTimeout(60000);
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@ public class UnloadDistributedZkTest extends BasicDistributedZkTest {
|
||||||
|
|
||||||
client = clients.get(1);
|
client = clients.get(1);
|
||||||
String url2 = getBaseUrl(client);
|
String url2 = getBaseUrl(client);
|
||||||
try (HttpSolrClient adminClient = new HttpSolrClient(url2)) {
|
try (HttpSolrClient adminClient = getHttpSolrClient(url2)) {
|
||||||
|
|
||||||
Create createCmd = new Create();
|
Create createCmd = new Create();
|
||||||
createCmd.setCoreName("unloadcollection2");
|
createCmd.setCoreName("unloadcollection2");
|
||||||
|
@ -213,7 +213,7 @@ public class UnloadDistributedZkTest extends BasicDistributedZkTest {
|
||||||
|
|
||||||
Random random = random();
|
Random random = random();
|
||||||
if (random.nextBoolean()) {
|
if (random.nextBoolean()) {
|
||||||
try (HttpSolrClient collectionClient = new HttpSolrClient(leaderProps.getCoreUrl())) {
|
try (HttpSolrClient collectionClient = getHttpSolrClient(leaderProps.getCoreUrl())) {
|
||||||
// lets try and use the solrj client to index and retrieve a couple
|
// lets try and use the solrj client to index and retrieve a couple
|
||||||
// documents
|
// documents
|
||||||
SolrInputDocument doc1 = getDoc(id, 6, i1, -600, tlong, 600, t1,
|
SolrInputDocument doc1 = getDoc(id, 6, i1, -600, tlong, 600, t1,
|
||||||
|
@ -232,7 +232,7 @@ public class UnloadDistributedZkTest extends BasicDistributedZkTest {
|
||||||
// create another replica for our collection
|
// create another replica for our collection
|
||||||
client = clients.get(2);
|
client = clients.get(2);
|
||||||
String url3 = getBaseUrl(client);
|
String url3 = getBaseUrl(client);
|
||||||
try (HttpSolrClient adminClient = new HttpSolrClient(url3)) {
|
try (HttpSolrClient adminClient = getHttpSolrClient(url3)) {
|
||||||
Create createCmd = new Create();
|
Create createCmd = new Create();
|
||||||
createCmd.setCoreName("unloadcollection3");
|
createCmd.setCoreName("unloadcollection3");
|
||||||
createCmd.setCollection("unloadcollection");
|
createCmd.setCollection("unloadcollection");
|
||||||
|
@ -246,7 +246,7 @@ public class UnloadDistributedZkTest extends BasicDistributedZkTest {
|
||||||
// so that we start with some versions when we reload...
|
// so that we start with some versions when we reload...
|
||||||
DirectUpdateHandler2.commitOnClose = false;
|
DirectUpdateHandler2.commitOnClose = false;
|
||||||
|
|
||||||
try (HttpSolrClient addClient = new HttpSolrClient(url3 + "/unloadcollection3")) {
|
try (HttpSolrClient addClient = getHttpSolrClient(url3 + "/unloadcollection3")) {
|
||||||
addClient.setConnectionTimeout(30000);
|
addClient.setConnectionTimeout(30000);
|
||||||
|
|
||||||
// add a few docs
|
// add a few docs
|
||||||
|
@ -260,7 +260,7 @@ public class UnloadDistributedZkTest extends BasicDistributedZkTest {
|
||||||
//collectionClient.commit();
|
//collectionClient.commit();
|
||||||
|
|
||||||
// unload the leader
|
// unload the leader
|
||||||
try (HttpSolrClient collectionClient = new HttpSolrClient(leaderProps.getBaseUrl())) {
|
try (HttpSolrClient collectionClient = getHttpSolrClient(leaderProps.getBaseUrl())) {
|
||||||
collectionClient.setConnectionTimeout(15000);
|
collectionClient.setConnectionTimeout(15000);
|
||||||
collectionClient.setSoTimeout(30000);
|
collectionClient.setSoTimeout(30000);
|
||||||
|
|
||||||
|
@ -284,7 +284,7 @@ public class UnloadDistributedZkTest extends BasicDistributedZkTest {
|
||||||
// ensure there is a leader
|
// ensure there is a leader
|
||||||
zkStateReader.getLeaderRetry("unloadcollection", "shard1", 15000);
|
zkStateReader.getLeaderRetry("unloadcollection", "shard1", 15000);
|
||||||
|
|
||||||
try (HttpSolrClient addClient = new HttpSolrClient(url2 + "/unloadcollection2")) {
|
try (HttpSolrClient addClient = getHttpSolrClient(url2 + "/unloadcollection2")) {
|
||||||
addClient.setConnectionTimeout(30000);
|
addClient.setConnectionTimeout(30000);
|
||||||
addClient.setSoTimeout(90000);
|
addClient.setSoTimeout(90000);
|
||||||
|
|
||||||
|
@ -299,7 +299,7 @@ public class UnloadDistributedZkTest extends BasicDistributedZkTest {
|
||||||
// create another replica for our collection
|
// create another replica for our collection
|
||||||
client = clients.get(3);
|
client = clients.get(3);
|
||||||
String url4 = getBaseUrl(client);
|
String url4 = getBaseUrl(client);
|
||||||
try (HttpSolrClient adminClient = new HttpSolrClient(url4)) {
|
try (HttpSolrClient adminClient = getHttpSolrClient(url4)) {
|
||||||
adminClient.setConnectionTimeout(15000);
|
adminClient.setConnectionTimeout(15000);
|
||||||
adminClient.setSoTimeout(30000);
|
adminClient.setSoTimeout(30000);
|
||||||
|
|
||||||
|
@ -314,7 +314,7 @@ public class UnloadDistributedZkTest extends BasicDistributedZkTest {
|
||||||
|
|
||||||
// unload the leader again
|
// unload the leader again
|
||||||
leaderProps = getLeaderUrlFromZk("unloadcollection", "shard1");
|
leaderProps = getLeaderUrlFromZk("unloadcollection", "shard1");
|
||||||
try (HttpSolrClient collectionClient = new HttpSolrClient(leaderProps.getBaseUrl())) {
|
try (HttpSolrClient collectionClient = getHttpSolrClient(leaderProps.getBaseUrl())) {
|
||||||
collectionClient.setConnectionTimeout(15000);
|
collectionClient.setConnectionTimeout(15000);
|
||||||
collectionClient.setSoTimeout(30000);
|
collectionClient.setSoTimeout(30000);
|
||||||
|
|
||||||
|
@ -338,7 +338,7 @@ public class UnloadDistributedZkTest extends BasicDistributedZkTest {
|
||||||
DirectUpdateHandler2.commitOnClose = true;
|
DirectUpdateHandler2.commitOnClose = true;
|
||||||
|
|
||||||
// bring the downed leader back as replica
|
// bring the downed leader back as replica
|
||||||
try (HttpSolrClient adminClient = new HttpSolrClient(leaderProps.getBaseUrl())) {
|
try (HttpSolrClient adminClient = getHttpSolrClient(leaderProps.getBaseUrl())) {
|
||||||
adminClient.setConnectionTimeout(15000);
|
adminClient.setConnectionTimeout(15000);
|
||||||
adminClient.setSoTimeout(30000);
|
adminClient.setSoTimeout(30000);
|
||||||
|
|
||||||
|
@ -352,7 +352,7 @@ public class UnloadDistributedZkTest extends BasicDistributedZkTest {
|
||||||
|
|
||||||
long found1, found3;
|
long found1, found3;
|
||||||
|
|
||||||
try (HttpSolrClient adminClient = new HttpSolrClient(url2 + "/unloadcollection")) {
|
try (HttpSolrClient adminClient = getHttpSolrClient(url2 + "/unloadcollection")) {
|
||||||
adminClient.setConnectionTimeout(15000);
|
adminClient.setConnectionTimeout(15000);
|
||||||
adminClient.setSoTimeout(30000);
|
adminClient.setSoTimeout(30000);
|
||||||
adminClient.commit();
|
adminClient.commit();
|
||||||
|
@ -360,7 +360,7 @@ public class UnloadDistributedZkTest extends BasicDistributedZkTest {
|
||||||
q.set("distrib", false);
|
q.set("distrib", false);
|
||||||
found1 = adminClient.query(q).getResults().getNumFound();
|
found1 = adminClient.query(q).getResults().getNumFound();
|
||||||
}
|
}
|
||||||
try (HttpSolrClient adminClient = new HttpSolrClient(url3 + "/unloadcollection")) {
|
try (HttpSolrClient adminClient = getHttpSolrClient(url3 + "/unloadcollection")) {
|
||||||
adminClient.setConnectionTimeout(15000);
|
adminClient.setConnectionTimeout(15000);
|
||||||
adminClient.setSoTimeout(30000);
|
adminClient.setSoTimeout(30000);
|
||||||
adminClient.commit();
|
adminClient.commit();
|
||||||
|
@ -369,7 +369,7 @@ public class UnloadDistributedZkTest extends BasicDistributedZkTest {
|
||||||
found3 = adminClient.query(q).getResults().getNumFound();
|
found3 = adminClient.query(q).getResults().getNumFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
try (HttpSolrClient adminClient = new HttpSolrClient(url4 + "/unloadcollection")) {
|
try (HttpSolrClient adminClient = getHttpSolrClient(url4 + "/unloadcollection")) {
|
||||||
adminClient.setConnectionTimeout(15000);
|
adminClient.setConnectionTimeout(15000);
|
||||||
adminClient.setSoTimeout(30000);
|
adminClient.setSoTimeout(30000);
|
||||||
adminClient.commit();
|
adminClient.commit();
|
||||||
|
@ -387,7 +387,7 @@ public class UnloadDistributedZkTest extends BasicDistributedZkTest {
|
||||||
private void testUnloadLotsOfCores() throws Exception {
|
private void testUnloadLotsOfCores() throws Exception {
|
||||||
SolrClient client = clients.get(2);
|
SolrClient client = clients.get(2);
|
||||||
String url3 = getBaseUrl(client);
|
String url3 = getBaseUrl(client);
|
||||||
try (final HttpSolrClient adminClient = new HttpSolrClient(url3)) {
|
try (final HttpSolrClient adminClient = getHttpSolrClient(url3)) {
|
||||||
adminClient.setConnectionTimeout(15000);
|
adminClient.setConnectionTimeout(15000);
|
||||||
adminClient.setSoTimeout(60000);
|
adminClient.setSoTimeout(60000);
|
||||||
int cnt = atLeast(3);
|
int cnt = atLeast(3);
|
||||||
|
|
|
@ -97,7 +97,7 @@ public class HdfsWriteToMultipleCollectionsTest extends BasicDistributedZkTest {
|
||||||
List<CloudSolrClient> cloudClients = new ArrayList<>();
|
List<CloudSolrClient> cloudClients = new ArrayList<>();
|
||||||
List<StoppableIndexingThread> threads = new ArrayList<>();
|
List<StoppableIndexingThread> threads = new ArrayList<>();
|
||||||
for (int i = 0; i < cnt; i++) {
|
for (int i = 0; i < cnt; i++) {
|
||||||
CloudSolrClient client = new CloudSolrClient(zkServer.getZkAddress());
|
CloudSolrClient client = getCloudSolrClient(zkServer.getZkAddress());
|
||||||
client.setDefaultCollection(ACOLLECTION + i);
|
client.setDefaultCollection(ACOLLECTION + i);
|
||||||
cloudClients.add(client);
|
cloudClients.add(client);
|
||||||
StoppableIndexingThread indexThread = new StoppableIndexingThread(null, client, "1", true, docCount, 1, true);
|
StoppableIndexingThread indexThread = new StoppableIndexingThread(null, client, "1", true, docCount, 1, true);
|
||||||
|
|
|
@ -165,7 +165,7 @@ public class StressHdfsTest extends BasicDistributedZkTest {
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (SolrClient client : clients) {
|
for (SolrClient client : clients) {
|
||||||
try (HttpSolrClient c = new HttpSolrClient(getBaseUrl(client) + "/" + DELETE_DATA_DIR_COLLECTION)) {
|
try (HttpSolrClient c = getHttpSolrClient(getBaseUrl(client) + "/" + DELETE_DATA_DIR_COLLECTION)) {
|
||||||
int docCnt = random().nextInt(1000) + 1;
|
int docCnt = random().nextInt(1000) + 1;
|
||||||
for (int j = 0; j < docCnt; j++) {
|
for (int j = 0; j < docCnt; j++) {
|
||||||
c.add(getDoc("id", i++, "txt_t", "just some random text for a doc"));
|
c.add(getDoc("id", i++, "txt_t", "just some random text for a doc"));
|
||||||
|
|
|
@ -148,14 +148,14 @@ public class OpenCloseCoreStressTest extends SolrTestCaseJ4 {
|
||||||
// Mostly to keep annoying logging messages from being sent out all the time.
|
// Mostly to keep annoying logging messages from being sent out all the time.
|
||||||
|
|
||||||
for (int idx = 0; idx < indexingThreads; ++idx) {
|
for (int idx = 0; idx < indexingThreads; ++idx) {
|
||||||
HttpSolrClient client = new HttpSolrClient(url);
|
HttpSolrClient client = getHttpSolrClient(url);
|
||||||
client.setDefaultMaxConnectionsPerHost(25);
|
client.setDefaultMaxConnectionsPerHost(25);
|
||||||
client.setConnectionTimeout(30000);
|
client.setConnectionTimeout(30000);
|
||||||
client.setSoTimeout(60000);
|
client.setSoTimeout(60000);
|
||||||
indexingClients.add(client);
|
indexingClients.add(client);
|
||||||
}
|
}
|
||||||
for (int idx = 0; idx < queryThreads; ++idx) {
|
for (int idx = 0; idx < queryThreads; ++idx) {
|
||||||
HttpSolrClient client = new HttpSolrClient(url);
|
HttpSolrClient client = getHttpSolrClient(url);
|
||||||
client.setDefaultMaxConnectionsPerHost(25);
|
client.setDefaultMaxConnectionsPerHost(25);
|
||||||
client.setConnectionTimeout(30000);
|
client.setConnectionTimeout(30000);
|
||||||
client.setSoTimeout(30000);
|
client.setSoTimeout(30000);
|
||||||
|
|
|
@ -112,7 +112,7 @@ public class TestDynamicLoading extends AbstractFullDistribZkTestBase {
|
||||||
assertEquals(TestBlobHandler.getAsString(map), ".system collection not available", map.get("msg"));
|
assertEquals(TestBlobHandler.getAsString(map), ".system collection not available", map.get("msg"));
|
||||||
|
|
||||||
|
|
||||||
TestBlobHandler.createSystemCollection(new HttpSolrClient(baseURL, randomClient.getHttpClient()));
|
TestBlobHandler.createSystemCollection(getHttpSolrClient(baseURL, randomClient.getHttpClient()));
|
||||||
waitForRecoveriesToFinish(".system", true);
|
waitForRecoveriesToFinish(".system", true);
|
||||||
|
|
||||||
map = TestSolrConfigHandler.getRespMap("/test1?wt=json", client);
|
map = TestSolrConfigHandler.getRespMap("/test1?wt=json", client);
|
||||||
|
|
|
@ -156,7 +156,8 @@ public class TestReplicationHandler extends SolrTestCaseJ4 {
|
||||||
private static SolrClient createNewSolrClient(int port) {
|
private static SolrClient createNewSolrClient(int port) {
|
||||||
try {
|
try {
|
||||||
// setup the client...
|
// setup the client...
|
||||||
HttpSolrClient client = new HttpSolrClient(buildUrl(port) + "/" + DEFAULT_TEST_CORENAME);
|
final String baseUrl = buildUrl(port) + "/" + DEFAULT_TEST_CORENAME;
|
||||||
|
HttpSolrClient client = getHttpSolrClient(baseUrl);
|
||||||
client.setConnectionTimeout(15000);
|
client.setConnectionTimeout(15000);
|
||||||
client.setSoTimeout(60000);
|
client.setSoTimeout(60000);
|
||||||
client.setDefaultMaxConnectionsPerHost(100);
|
client.setDefaultMaxConnectionsPerHost(100);
|
||||||
|
@ -277,7 +278,7 @@ public class TestReplicationHandler extends SolrTestCaseJ4 {
|
||||||
|
|
||||||
private HttpSolrClient adminClient(SolrClient client) {
|
private HttpSolrClient adminClient(SolrClient client) {
|
||||||
String adminUrl = ((HttpSolrClient)client).getBaseURL().replace("/collection1", "");
|
String adminUrl = ((HttpSolrClient)client).getBaseURL().replace("/collection1", "");
|
||||||
return new HttpSolrClient(adminUrl);
|
return getHttpSolrClient(adminUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -79,7 +79,8 @@ public class TestReplicationHandlerBackup extends SolrJettyTestBase {
|
||||||
private static SolrClient createNewSolrClient(int port) {
|
private static SolrClient createNewSolrClient(int port) {
|
||||||
try {
|
try {
|
||||||
// setup the client...
|
// setup the client...
|
||||||
HttpSolrClient client = new HttpSolrClient(buildUrl(port, context) + "/" + DEFAULT_TEST_CORENAME);
|
final String baseUrl = buildUrl(port, context) + "/" + DEFAULT_TEST_CORENAME;
|
||||||
|
HttpSolrClient client = getHttpSolrClient(baseUrl);
|
||||||
client.setConnectionTimeout(15000);
|
client.setConnectionTimeout(15000);
|
||||||
client.setSoTimeout(60000);
|
client.setSoTimeout(60000);
|
||||||
client.setDefaultMaxConnectionsPerHost(100);
|
client.setDefaultMaxConnectionsPerHost(100);
|
||||||
|
|
|
@ -72,7 +72,8 @@ public class TestRestoreCore extends SolrJettyTestBase {
|
||||||
private static SolrClient createNewSolrClient(int port) {
|
private static SolrClient createNewSolrClient(int port) {
|
||||||
try {
|
try {
|
||||||
// setup the client...
|
// setup the client...
|
||||||
HttpSolrClient client = new HttpSolrClient(buildUrl(port, context) + "/" + DEFAULT_TEST_CORENAME);
|
final String baseUrl = buildUrl(port, context) + "/" + DEFAULT_TEST_CORENAME;
|
||||||
|
HttpSolrClient client = getHttpSolrClient(baseUrl);
|
||||||
client.setConnectionTimeout(15000);
|
client.setConnectionTimeout(15000);
|
||||||
client.setSoTimeout(60000);
|
client.setSoTimeout(60000);
|
||||||
client.setDefaultMaxConnectionsPerHost(100);
|
client.setDefaultMaxConnectionsPerHost(100);
|
||||||
|
|
|
@ -254,7 +254,7 @@ public class CoreAdminHandlerTest extends SolrTestCaseJ4 {
|
||||||
JettySolrRunner runner = new JettySolrRunner(solrHomeDirectory.getAbsolutePath(), buildJettyConfig("/solr"));
|
JettySolrRunner runner = new JettySolrRunner(solrHomeDirectory.getAbsolutePath(), buildJettyConfig("/solr"));
|
||||||
runner.start();
|
runner.start();
|
||||||
|
|
||||||
try (HttpSolrClient client = new HttpSolrClient(runner.getBaseUrl() + "/corex")) {
|
try (HttpSolrClient client = getHttpSolrClient(runner.getBaseUrl() + "/corex")) {
|
||||||
client.setConnectionTimeout(SolrTestCaseJ4.DEFAULT_CONNECTION_TIMEOUT);
|
client.setConnectionTimeout(SolrTestCaseJ4.DEFAULT_CONNECTION_TIMEOUT);
|
||||||
client.setSoTimeout(SolrTestCaseJ4.DEFAULT_CONNECTION_TIMEOUT);
|
client.setSoTimeout(SolrTestCaseJ4.DEFAULT_CONNECTION_TIMEOUT);
|
||||||
SolrInputDocument doc = new SolrInputDocument();
|
SolrInputDocument doc = new SolrInputDocument();
|
||||||
|
@ -263,7 +263,7 @@ public class CoreAdminHandlerTest extends SolrTestCaseJ4 {
|
||||||
client.commit();
|
client.commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
try (HttpSolrClient client = new HttpSolrClient(runner.getBaseUrl().toString())) {
|
try (HttpSolrClient client = getHttpSolrClient(runner.getBaseUrl().toString())) {
|
||||||
client.setConnectionTimeout(SolrTestCaseJ4.DEFAULT_CONNECTION_TIMEOUT);
|
client.setConnectionTimeout(SolrTestCaseJ4.DEFAULT_CONNECTION_TIMEOUT);
|
||||||
client.setSoTimeout(SolrTestCaseJ4.DEFAULT_CONNECTION_TIMEOUT);
|
client.setSoTimeout(SolrTestCaseJ4.DEFAULT_CONNECTION_TIMEOUT);
|
||||||
CoreAdminRequest.Unload req = new CoreAdminRequest.Unload(false);
|
CoreAdminRequest.Unload req = new CoreAdminRequest.Unload(false);
|
||||||
|
|
|
@ -67,8 +67,8 @@ public class DistributedDebugComponentTest extends SolrJettyTestBase {
|
||||||
createJetty(solrHome.getAbsolutePath());
|
createJetty(solrHome.getAbsolutePath());
|
||||||
String url = jetty.getBaseUrl().toString();
|
String url = jetty.getBaseUrl().toString();
|
||||||
|
|
||||||
collection1 = new HttpSolrClient(url + "/collection1");
|
collection1 = getHttpSolrClient(url + "/collection1");
|
||||||
collection2 = new HttpSolrClient(url + "/collection2");
|
collection2 = getHttpSolrClient(url + "/collection2");
|
||||||
|
|
||||||
String urlCollection1 = jetty.getBaseUrl().toString() + "/" + "collection1";
|
String urlCollection1 = jetty.getBaseUrl().toString() + "/" + "collection1";
|
||||||
String urlCollection2 = jetty.getBaseUrl().toString() + "/" + "collection2";
|
String urlCollection2 = jetty.getBaseUrl().toString() + "/" + "collection2";
|
||||||
|
@ -76,7 +76,7 @@ public class DistributedDebugComponentTest extends SolrJettyTestBase {
|
||||||
shard2 = urlCollection2.replaceAll("https?://", "");
|
shard2 = urlCollection2.replaceAll("https?://", "");
|
||||||
|
|
||||||
//create second core
|
//create second core
|
||||||
try (HttpSolrClient nodeClient = new HttpSolrClient(url)) {
|
try (HttpSolrClient nodeClient = getHttpSolrClient(url)) {
|
||||||
CoreAdminRequest.Create req = new CoreAdminRequest.Create();
|
CoreAdminRequest.Create req = new CoreAdminRequest.Create();
|
||||||
req.setCoreName("collection2");
|
req.setCoreName("collection2");
|
||||||
req.setConfigSet("collection1");
|
req.setConfigSet("collection1");
|
||||||
|
|
|
@ -109,7 +109,8 @@ public class DistributedQueryElevationComponentTest extends BaseDistributedSearc
|
||||||
assertEquals(true, document.getFieldValue("[elevated]"));
|
assertEquals(true, document.getFieldValue("[elevated]"));
|
||||||
|
|
||||||
// Force javabin format
|
// Force javabin format
|
||||||
HttpSolrClient client = new HttpSolrClient(((HttpSolrClient)clients.get(0)).getBaseURL());
|
final String clientUrl = ((HttpSolrClient)clients.get(0)).getBaseURL();
|
||||||
|
HttpSolrClient client = getHttpSolrClient(clientUrl);
|
||||||
client.setParser(new BinaryResponseParser());
|
client.setParser(new BinaryResponseParser());
|
||||||
SolrQuery solrQuery = new SolrQuery("XXXX").setParam("qt", "/elevate").setParam("shards.qt", "/elevate").setRows(500).setFields("id,[elevated]")
|
SolrQuery solrQuery = new SolrQuery("XXXX").setParam("qt", "/elevate").setParam("shards.qt", "/elevate").setRows(500).setFields("id,[elevated]")
|
||||||
.setParam("enableElevation", "true").setParam("forceElevation", "true").setParam("elevateIds", "6", "wt", "javabin")
|
.setParam("enableElevation", "true").setParam("forceElevation", "true").setParam("elevateIds", "6", "wt", "javabin")
|
||||||
|
|
|
@ -59,7 +59,7 @@ public class TestSolrJ extends SolrTestCaseJ4 {
|
||||||
ConcurrentUpdateSolrClient concurrentClient = null;
|
ConcurrentUpdateSolrClient concurrentClient = null;
|
||||||
|
|
||||||
// server = concurrentClient = new ConcurrentUpdateSolrServer(addr,32,8);
|
// server = concurrentClient = new ConcurrentUpdateSolrServer(addr,32,8);
|
||||||
client = concurrentClient = new ConcurrentUpdateSolrClient(addr,64,nConnections);
|
client = concurrentClient = getConcurrentUpdateSolrClient(addr,64,nConnections);
|
||||||
|
|
||||||
client.deleteByQuery("*:*");
|
client.deleteByQuery("*:*");
|
||||||
client.commit();
|
client.commit();
|
||||||
|
@ -164,7 +164,7 @@ public class TestSolrJ extends SolrTestCaseJ4 {
|
||||||
|
|
||||||
public void doCommitPerf() throws Exception {
|
public void doCommitPerf() throws Exception {
|
||||||
|
|
||||||
try (HttpSolrClient client = new HttpSolrClient("http://127.0.0.1:8983/solr")) {
|
try (HttpSolrClient client = getHttpSolrClient("http://127.0.0.1:8983/solr")) {
|
||||||
|
|
||||||
final RTimer timer = new RTimer();
|
final RTimer timer = new RTimer();
|
||||||
|
|
||||||
|
|
|
@ -117,8 +117,8 @@ public class TestDistribIDF extends SolrTestCaseJ4 {
|
||||||
|
|
||||||
//Test against all nodes
|
//Test against all nodes
|
||||||
for (JettySolrRunner jettySolrRunner : solrCluster.getJettySolrRunners()) {
|
for (JettySolrRunner jettySolrRunner : solrCluster.getJettySolrRunners()) {
|
||||||
SolrClient solrClient = new HttpSolrClient(jettySolrRunner.getBaseUrl().toString());
|
SolrClient solrClient = getHttpSolrClient(jettySolrRunner.getBaseUrl().toString());
|
||||||
SolrClient solrClient_local = new HttpSolrClient(jettySolrRunner.getBaseUrl().toString());
|
SolrClient solrClient_local = getHttpSolrClient(jettySolrRunner.getBaseUrl().toString());
|
||||||
|
|
||||||
SolrQuery query = new SolrQuery("cat:football");
|
SolrQuery query = new SolrQuery("cat:football");
|
||||||
query.setFields("*,score");
|
query.setFields("*,score");
|
||||||
|
@ -161,8 +161,8 @@ public class TestDistribIDF extends SolrTestCaseJ4 {
|
||||||
|
|
||||||
//Test against all nodes
|
//Test against all nodes
|
||||||
for (JettySolrRunner jettySolrRunner : solrCluster.getJettySolrRunners()) {
|
for (JettySolrRunner jettySolrRunner : solrCluster.getJettySolrRunners()) {
|
||||||
SolrClient solrClient = new HttpSolrClient(jettySolrRunner.getBaseUrl().toString());
|
SolrClient solrClient = getHttpSolrClient(jettySolrRunner.getBaseUrl().toString());
|
||||||
SolrClient solrClient_local = new HttpSolrClient(jettySolrRunner.getBaseUrl().toString());
|
SolrClient solrClient_local = getHttpSolrClient(jettySolrRunner.getBaseUrl().toString());
|
||||||
|
|
||||||
SolrQuery query = new SolrQuery("cat:football");
|
SolrQuery query = new SolrQuery("cat:football");
|
||||||
query.setFields("*,score").add("collection", "collection1,collection2");
|
query.setFields("*,score").add("collection", "collection1,collection2");
|
||||||
|
|
|
@ -59,6 +59,7 @@ import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import static java.nio.charset.StandardCharsets.UTF_8;
|
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||||
import static java.util.Collections.singletonMap;
|
import static java.util.Collections.singletonMap;
|
||||||
|
import static org.apache.solr.SolrTestCaseJ4.getHttpSolrClient;
|
||||||
import static org.apache.solr.common.cloud.ZkStateReader.BASE_URL_PROP;
|
import static org.apache.solr.common.cloud.ZkStateReader.BASE_URL_PROP;
|
||||||
|
|
||||||
|
|
||||||
|
@ -162,7 +163,7 @@ public class BasicAuthIntegrationTest extends TestMiniSolrCloudClusterBase {
|
||||||
CollectionAdminRequest.Reload reload = new CollectionAdminRequest.Reload();
|
CollectionAdminRequest.Reload reload = new CollectionAdminRequest.Reload();
|
||||||
reload.setCollectionName(defaultCollName);
|
reload.setCollectionName(defaultCollName);
|
||||||
|
|
||||||
HttpSolrClient solrClient = new HttpSolrClient(baseUrl);
|
HttpSolrClient solrClient = getHttpSolrClient(baseUrl);
|
||||||
try {
|
try {
|
||||||
rsp = solrClient.request(reload);
|
rsp = solrClient.request(reload);
|
||||||
fail("must have failed");
|
fail("must have failed");
|
||||||
|
|
|
@ -78,7 +78,8 @@ public class TestNamedUpdateProcessors extends AbstractFullDistribZkTestBase {
|
||||||
HttpSolrClient randomClient = (HttpSolrClient) clients.get(random().nextInt(clients.size()));
|
HttpSolrClient randomClient = (HttpSolrClient) clients.get(random().nextInt(clients.size()));
|
||||||
String baseURL = randomClient.getBaseURL();
|
String baseURL = randomClient.getBaseURL();
|
||||||
|
|
||||||
TestBlobHandler.createSystemCollection(new HttpSolrClient(baseURL.substring(0, baseURL.lastIndexOf('/')), randomClient.getHttpClient()));
|
final String solrClientUrl = baseURL.substring(0, baseURL.lastIndexOf('/'));
|
||||||
|
TestBlobHandler.createSystemCollection(getHttpSolrClient(solrClientUrl, randomClient.getHttpClient()));
|
||||||
waitForRecoveriesToFinish(".system", true);
|
waitForRecoveriesToFinish(".system", true);
|
||||||
|
|
||||||
TestBlobHandler.postAndCheck(cloudClient, baseURL.substring(0, baseURL.lastIndexOf('/')), blobName, TestDynamicLoading.generateZip(RuntimeUrp.class), 1);
|
TestBlobHandler.postAndCheck(cloudClient, baseURL.substring(0, baseURL.lastIndexOf('/')), blobName, TestDynamicLoading.generateZip(RuntimeUrp.class), 1);
|
||||||
|
|
|
@ -351,7 +351,7 @@ public class TestSolrCLIRunExample extends SolrTestCaseJ4 {
|
||||||
exampleSolrHomeDir.isDirectory());
|
exampleSolrHomeDir.isDirectory());
|
||||||
|
|
||||||
if ("techproducts".equals(exampleName)) {
|
if ("techproducts".equals(exampleName)) {
|
||||||
HttpSolrClient solrClient = new HttpSolrClient("http://localhost:" + bindPort + "/solr/" + exampleName);
|
HttpSolrClient solrClient = getHttpSolrClient("http://localhost:" + bindPort + "/solr/" + exampleName);
|
||||||
SolrQuery query = new SolrQuery("*:*");
|
SolrQuery query = new SolrQuery("*:*");
|
||||||
QueryResponse qr = solrClient.query(query);
|
QueryResponse qr = solrClient.query(query);
|
||||||
long numFound = qr.getResults().getNumFound();
|
long numFound = qr.getResults().getNumFound();
|
||||||
|
@ -439,7 +439,7 @@ public class TestSolrCLIRunExample extends SolrTestCaseJ4 {
|
||||||
CloudSolrClient cloudClient = null;
|
CloudSolrClient cloudClient = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
cloudClient = new CloudSolrClient(executor.solrCloudCluster.getZkServer().getZkAddress());
|
cloudClient = getCloudSolrClient(executor.solrCloudCluster.getZkServer().getZkAddress());
|
||||||
cloudClient.connect();
|
cloudClient.connect();
|
||||||
cloudClient.setDefaultCollection(collectionName);
|
cloudClient.setDefaultCollection(collectionName);
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,6 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.Callable;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
|
@ -191,12 +190,17 @@ public class CloudSolrClient extends SolrClient {
|
||||||
* "host1:2181,host2:2181,host3:2181/mysolrchroot"
|
* "host1:2181,host2:2181,host3:2181/mysolrchroot"
|
||||||
* <p>
|
* <p>
|
||||||
* "zoo1.example.com:2181,zoo2.example.com:2181,zoo3.example.com:2181"
|
* "zoo1.example.com:2181,zoo2.example.com:2181,zoo3.example.com:2181"
|
||||||
|
*
|
||||||
|
* @deprecated use {@link Builder} instead.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public CloudSolrClient(String zkHost) {
|
public CloudSolrClient(String zkHost) {
|
||||||
this.zkHost = zkHost;
|
this.zkHost = zkHost;
|
||||||
this.clientIsInternal = true;
|
this.clientIsInternal = true;
|
||||||
this.myClient = HttpClientUtil.createClient(null);
|
this.myClient = HttpClientUtil.createClient(null);
|
||||||
this.lbClient = new LBHttpSolrClient(myClient);
|
this.lbClient = new LBHttpSolrClient.Builder()
|
||||||
|
.withHttpClient(myClient)
|
||||||
|
.build();
|
||||||
this.lbClient.setRequestWriter(new BinaryRequestWriter());
|
this.lbClient.setRequestWriter(new BinaryRequestWriter());
|
||||||
this.lbClient.setParser(new BinaryResponseParser());
|
this.lbClient.setParser(new BinaryResponseParser());
|
||||||
this.updatesToLeaders = true;
|
this.updatesToLeaders = true;
|
||||||
|
@ -226,14 +230,15 @@ public class CloudSolrClient extends SolrClient {
|
||||||
* @param httpClient
|
* @param httpClient
|
||||||
* the {@link HttpClient} instance to be used for all requests. The
|
* the {@link HttpClient} instance to be used for all requests. The
|
||||||
* provided httpClient should use a multi-threaded connection manager.
|
* provided httpClient should use a multi-threaded connection manager.
|
||||||
|
*
|
||||||
|
* @deprecated use {@link Builder} instead.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public CloudSolrClient(String zkHost, HttpClient httpClient) {
|
public CloudSolrClient(String zkHost, HttpClient httpClient) {
|
||||||
this.zkHost = zkHost;
|
this.zkHost = zkHost;
|
||||||
this.clientIsInternal = httpClient == null;
|
this.clientIsInternal = httpClient == null;
|
||||||
this.myClient = httpClient == null ? HttpClientUtil.createClient(null) : httpClient;
|
this.myClient = httpClient == null ? HttpClientUtil.createClient(null) : httpClient;
|
||||||
this.lbClient = new LBHttpSolrClient(myClient);
|
this.lbClient = createLBHttpSolrClient(myClient);
|
||||||
this.lbClient.setRequestWriter(new BinaryRequestWriter());
|
|
||||||
this.lbClient.setParser(new BinaryResponseParser());
|
|
||||||
this.updatesToLeaders = true;
|
this.updatesToLeaders = true;
|
||||||
shutdownLBHttpSolrServer = true;
|
shutdownLBHttpSolrServer = true;
|
||||||
lbClient.addQueryParams(STATE_VERSION);
|
lbClient.addQueryParams(STATE_VERSION);
|
||||||
|
@ -256,7 +261,9 @@ public class CloudSolrClient extends SolrClient {
|
||||||
* @throws IllegalArgumentException
|
* @throws IllegalArgumentException
|
||||||
* if the chroot value does not start with a forward slash.
|
* if the chroot value does not start with a forward slash.
|
||||||
* @see #CloudSolrClient(String)
|
* @see #CloudSolrClient(String)
|
||||||
|
* @deprecated use {@link Builder} instead.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public CloudSolrClient(Collection<String> zkHosts, String chroot) {
|
public CloudSolrClient(Collection<String> zkHosts, String chroot) {
|
||||||
this(zkHosts, chroot, null);
|
this(zkHosts, chroot, null);
|
||||||
}
|
}
|
||||||
|
@ -281,47 +288,64 @@ public class CloudSolrClient extends SolrClient {
|
||||||
* @throws IllegalArgumentException
|
* @throws IllegalArgumentException
|
||||||
* if the chroot value does not start with a forward slash.
|
* if the chroot value does not start with a forward slash.
|
||||||
* @see #CloudSolrClient(String)
|
* @see #CloudSolrClient(String)
|
||||||
|
* @deprecated use {@link Builder} instead.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public CloudSolrClient(Collection<String> zkHosts, String chroot, HttpClient httpClient) {
|
public CloudSolrClient(Collection<String> zkHosts, String chroot, HttpClient httpClient) {
|
||||||
StringBuilder zkBuilder = new StringBuilder();
|
this.zkHost = buildZkHostString(zkHosts, chroot);
|
||||||
int lastIndexValue = zkHosts.size() - 1;
|
|
||||||
int i = 0;
|
|
||||||
for (String zkHost : zkHosts) {
|
|
||||||
zkBuilder.append(zkHost);
|
|
||||||
if (i < lastIndexValue) {
|
|
||||||
zkBuilder.append(",");
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
if (chroot != null) {
|
|
||||||
if (chroot.startsWith("/")) {
|
|
||||||
zkBuilder.append(chroot);
|
|
||||||
} else {
|
|
||||||
throw new IllegalArgumentException(
|
|
||||||
"The chroot must start with a forward slash.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Log the constructed connection string and then initialize. */
|
|
||||||
log.info("Final constructed zkHost string: " + zkBuilder.toString());
|
|
||||||
|
|
||||||
this.zkHost = zkBuilder.toString();
|
|
||||||
this.clientIsInternal = httpClient == null;
|
this.clientIsInternal = httpClient == null;
|
||||||
this.myClient = httpClient == null ? HttpClientUtil.createClient(null) : httpClient;
|
this.myClient = httpClient == null ? HttpClientUtil.createClient(null) : httpClient;
|
||||||
this.lbClient = new LBHttpSolrClient(myClient);
|
this.lbClient = createLBHttpSolrClient(myClient);
|
||||||
this.lbClient.setRequestWriter(new BinaryRequestWriter());
|
|
||||||
this.lbClient.setParser(new BinaryResponseParser());
|
|
||||||
this.updatesToLeaders = true;
|
this.updatesToLeaders = true;
|
||||||
shutdownLBHttpSolrServer = true;
|
shutdownLBHttpSolrServer = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new client object that connects to Zookeeper and is always aware
|
||||||
|
* of the SolrCloud state. If there is a fully redundant Zookeeper quorum and
|
||||||
|
* SolrCloud has enough replicas for every shard in a collection, there is no
|
||||||
|
* single point of failure. Updates will be sent to shard leaders by default.
|
||||||
|
*
|
||||||
|
* @param zkHosts
|
||||||
|
* A Java Collection (List, Set, etc) of HOST:PORT strings, one for
|
||||||
|
* each host in the zookeeper ensemble. Note that with certain
|
||||||
|
* Collection types like HashSet, the order of hosts in the final
|
||||||
|
* connect string may not be in the same order you added them.
|
||||||
|
* @param chroot
|
||||||
|
* A chroot value for zookeeper, starting with a forward slash. If no
|
||||||
|
* chroot is required, use null.
|
||||||
|
* @param httpClient
|
||||||
|
* the {@link HttpClient} instance to be used for all requests. The provided httpClient should use a
|
||||||
|
* multi-threaded connection manager. If null, a default HttpClient will be used.
|
||||||
|
* @param lbSolrClient
|
||||||
|
* LBHttpSolrServer instance for requests. If null, a default HttpClient will be used.
|
||||||
|
* @param updatesToLeaders
|
||||||
|
* If true, sends updates to shard leaders.
|
||||||
|
*
|
||||||
|
* @deprecated use {@link Builder} instead. This will soon be a protected method, and will only
|
||||||
|
* be available for use in implementing subclasses.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public CloudSolrClient(Collection<String> zkHosts, String chroot, HttpClient httpClient, LBHttpSolrClient lbSolrClient, boolean updatesToLeaders) {
|
||||||
|
this.zkHost = buildZkHostString(zkHosts, chroot);
|
||||||
|
this.updatesToLeaders = updatesToLeaders;
|
||||||
|
|
||||||
|
this.clientIsInternal = httpClient == null;
|
||||||
|
this.myClient = httpClient == null ? HttpClientUtil.createClient(null) : httpClient;
|
||||||
|
|
||||||
|
this.shutdownLBHttpSolrServer = lbSolrClient == null;
|
||||||
|
this.lbClient = lbSolrClient == null ? createLBHttpSolrClient(myClient) : lbSolrClient;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param zkHost
|
* @param zkHost
|
||||||
* A zookeeper client endpoint.
|
* A zookeeper client endpoint.
|
||||||
* @param updatesToLeaders
|
* @param updatesToLeaders
|
||||||
* If true, sends updates only to shard leaders.
|
* If true, sends updates only to shard leaders.
|
||||||
* @see #CloudSolrClient(String) for full description and details on zkHost
|
* @see #CloudSolrClient(String) for full description and details on zkHost
|
||||||
|
* @deprecated use {@link CloudSolrClient.Builder} instead.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public CloudSolrClient(String zkHost, boolean updatesToLeaders) {
|
public CloudSolrClient(String zkHost, boolean updatesToLeaders) {
|
||||||
this(zkHost, updatesToLeaders, null);
|
this(zkHost, updatesToLeaders, null);
|
||||||
}
|
}
|
||||||
|
@ -335,12 +359,16 @@ public class CloudSolrClient extends SolrClient {
|
||||||
* the {@link HttpClient} instance to be used for all requests. The provided httpClient should use a
|
* the {@link HttpClient} instance to be used for all requests. The provided httpClient should use a
|
||||||
* multi-threaded connection manager.
|
* multi-threaded connection manager.
|
||||||
* @see #CloudSolrClient(String) for full description and details on zkHost
|
* @see #CloudSolrClient(String) for full description and details on zkHost
|
||||||
|
* @deprecated use {@link CloudSolrClient.Builder} instead.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public CloudSolrClient(String zkHost, boolean updatesToLeaders, HttpClient httpClient) {
|
public CloudSolrClient(String zkHost, boolean updatesToLeaders, HttpClient httpClient) {
|
||||||
this.zkHost = zkHost;
|
this.zkHost = zkHost;
|
||||||
this.clientIsInternal = httpClient == null;
|
this.clientIsInternal = httpClient == null;
|
||||||
this.myClient = httpClient == null ? HttpClientUtil.createClient(null) : httpClient;
|
this.myClient = httpClient == null ? HttpClientUtil.createClient(null) : httpClient;
|
||||||
this.lbClient = new LBHttpSolrClient(myClient);
|
this.lbClient = new LBHttpSolrClient.Builder()
|
||||||
|
.withHttpClient(myClient)
|
||||||
|
.build();
|
||||||
this.lbClient.setRequestWriter(new BinaryRequestWriter());
|
this.lbClient.setRequestWriter(new BinaryRequestWriter());
|
||||||
this.lbClient.setParser(new BinaryResponseParser());
|
this.lbClient.setParser(new BinaryResponseParser());
|
||||||
this.updatesToLeaders = updatesToLeaders;
|
this.updatesToLeaders = updatesToLeaders;
|
||||||
|
@ -362,7 +390,9 @@ public class CloudSolrClient extends SolrClient {
|
||||||
* @param lbClient
|
* @param lbClient
|
||||||
* LBHttpSolrServer instance for requests.
|
* LBHttpSolrServer instance for requests.
|
||||||
* @see #CloudSolrClient(String) for full description and details on zkHost
|
* @see #CloudSolrClient(String) for full description and details on zkHost
|
||||||
|
* @deprecated use {@link CloudSolrClient.Builder} instead.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public CloudSolrClient(String zkHost, LBHttpSolrClient lbClient) {
|
public CloudSolrClient(String zkHost, LBHttpSolrClient lbClient) {
|
||||||
this(zkHost, lbClient, true);
|
this(zkHost, lbClient, true);
|
||||||
}
|
}
|
||||||
|
@ -375,7 +405,9 @@ public class CloudSolrClient extends SolrClient {
|
||||||
* @param updatesToLeaders
|
* @param updatesToLeaders
|
||||||
* If true, sends updates only to shard leaders.
|
* If true, sends updates only to shard leaders.
|
||||||
* @see #CloudSolrClient(String) for full description and details on zkHost
|
* @see #CloudSolrClient(String) for full description and details on zkHost
|
||||||
|
* @deprecated use {@link Builder} instead.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public CloudSolrClient(String zkHost, LBHttpSolrClient lbClient, boolean updatesToLeaders) {
|
public CloudSolrClient(String zkHost, LBHttpSolrClient lbClient, boolean updatesToLeaders) {
|
||||||
this.zkHost = zkHost;
|
this.zkHost = zkHost;
|
||||||
this.lbClient = lbClient;
|
this.lbClient = lbClient;
|
||||||
|
@ -1340,4 +1372,137 @@ public class CloudSolrClient extends SolrClient {
|
||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static LBHttpSolrClient createLBHttpSolrClient(HttpClient httpClient) {
|
||||||
|
final LBHttpSolrClient lbClient = new LBHttpSolrClient.Builder()
|
||||||
|
.withHttpClient(httpClient)
|
||||||
|
.build();
|
||||||
|
lbClient.setRequestWriter(new BinaryRequestWriter());
|
||||||
|
lbClient.setParser(new BinaryResponseParser());
|
||||||
|
|
||||||
|
return lbClient;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String buildZkHostString(Collection<String> zkHosts, String chroot) {
|
||||||
|
if (zkHosts == null || zkHosts.isEmpty()) {
|
||||||
|
throw new IllegalArgumentException("Cannot create CloudSearchClient without valid ZooKeeper host; none specified!");
|
||||||
|
}
|
||||||
|
|
||||||
|
StringBuilder zkBuilder = new StringBuilder();
|
||||||
|
int lastIndexValue = zkHosts.size() - 1;
|
||||||
|
int i = 0;
|
||||||
|
for (String zkHost : zkHosts) {
|
||||||
|
zkBuilder.append(zkHost);
|
||||||
|
if (i < lastIndexValue) {
|
||||||
|
zkBuilder.append(",");
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
if (chroot != null) {
|
||||||
|
if (chroot.startsWith("/")) {
|
||||||
|
zkBuilder.append(chroot);
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"The chroot must start with a forward slash.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Log the constructed connection string and then initialize. */
|
||||||
|
final String zkHostString = zkBuilder.toString();
|
||||||
|
log.info("Final constructed zkHost string: " + zkHostString);
|
||||||
|
return zkHostString;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs {@link CloudSolrClient} instances from provided configuration.
|
||||||
|
*/
|
||||||
|
public static class Builder {
|
||||||
|
private Collection<String> zkHosts;
|
||||||
|
private HttpClient httpClient;
|
||||||
|
private String zkChroot;
|
||||||
|
private LBHttpSolrClient loadBalancedSolrClient;
|
||||||
|
private boolean shardLeadersOnly;
|
||||||
|
|
||||||
|
public Builder() {
|
||||||
|
this.zkHosts = new ArrayList();
|
||||||
|
this.shardLeadersOnly = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provide a ZooKeeper client endpoint to be used when configuring {@link CloudSolrClient} instances.
|
||||||
|
*
|
||||||
|
* Method may be called multiple times. All provided values will be used.
|
||||||
|
*
|
||||||
|
* @param zkHost
|
||||||
|
* The client endpoint of the ZooKeeper quorum containing the cloud
|
||||||
|
* state.
|
||||||
|
*/
|
||||||
|
public Builder withZkHost(String zkHost) {
|
||||||
|
this.zkHosts.add(zkHost);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides a {@link HttpClient} for the builder to use when creating clients.
|
||||||
|
*/
|
||||||
|
public Builder withHttpClient(HttpClient httpClient) {
|
||||||
|
this.httpClient = httpClient;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provide a series of ZooKeeper client endpoints for the builder to use when creating clients.
|
||||||
|
*
|
||||||
|
* Method may be called multiple times. All provided values will be used.
|
||||||
|
*
|
||||||
|
* @param zkHosts
|
||||||
|
* A Java Collection (List, Set, etc) of HOST:PORT strings, one for
|
||||||
|
* each host in the ZooKeeper ensemble. Note that with certain
|
||||||
|
* Collection types like HashSet, the order of hosts in the final
|
||||||
|
* connect string may not be in the same order you added them.
|
||||||
|
*/
|
||||||
|
public Builder withZkHost(Collection<String> zkHosts) {
|
||||||
|
this.zkHosts.addAll(zkHosts);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides a ZooKeeper chroot for the builder to use when creating clients.
|
||||||
|
*/
|
||||||
|
public Builder withZkChroot(String zkChroot) {
|
||||||
|
this.zkChroot = zkChroot;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides a {@link LBHttpSolrClient} for the builder to use when creating clients.
|
||||||
|
*/
|
||||||
|
public Builder withLBHttpSolrClient(LBHttpSolrClient loadBalancedSolrClient) {
|
||||||
|
this.loadBalancedSolrClient = loadBalancedSolrClient;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tells {@link Builder} that created clients should send updats only to shard leaders.
|
||||||
|
*/
|
||||||
|
public Builder sendUpdatesOnlyToShardLeaders() {
|
||||||
|
shardLeadersOnly = true;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tells {@link Builder} that created clients should send updates to all replicas for a shard.
|
||||||
|
*/
|
||||||
|
public Builder sendUpdatesToAllReplicasInShard() {
|
||||||
|
shardLeadersOnly = false;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a {@link CloudSolrClient} based on the provided configuration.
|
||||||
|
*/
|
||||||
|
public CloudSolrClient build() {
|
||||||
|
return new CloudSolrClient(zkHosts, zkChroot, httpClient, loadBalancedSolrClient, shardLeadersOnly);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,21 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.solr.client.solrj.impl;
|
package org.apache.solr.client.solrj.impl;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.lang.invoke.MethodHandles;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Queue;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.BlockingQueue;
|
||||||
|
import java.util.concurrent.CountDownLatch;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import org.apache.http.HttpResponse;
|
import org.apache.http.HttpResponse;
|
||||||
import org.apache.http.HttpStatus;
|
import org.apache.http.HttpStatus;
|
||||||
import org.apache.http.NameValuePair;
|
import org.apache.http.NameValuePair;
|
||||||
|
@ -45,21 +60,6 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.slf4j.MDC;
|
import org.slf4j.MDC;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.lang.invoke.MethodHandles;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Queue;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.concurrent.BlockingQueue;
|
|
||||||
import java.util.concurrent.CountDownLatch;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ConcurrentUpdateSolrClient buffers all added documents and writes
|
* ConcurrentUpdateSolrClient buffers all added documents and writes
|
||||||
* them into open HTTP connections. This class is thread safe.
|
* them into open HTTP connections. This class is thread safe.
|
||||||
|
@ -96,7 +96,10 @@ public class ConcurrentUpdateSolrClient extends SolrClient {
|
||||||
* The buffer size before the documents are sent to the server
|
* The buffer size before the documents are sent to the server
|
||||||
* @param threadCount
|
* @param threadCount
|
||||||
* The number of background threads used to empty the queue
|
* The number of background threads used to empty the queue
|
||||||
|
*
|
||||||
|
* @deprecated use {@link Builder} instead.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public ConcurrentUpdateSolrClient(String solrServerUrl, int queueSize,
|
public ConcurrentUpdateSolrClient(String solrServerUrl, int queueSize,
|
||||||
int threadCount) {
|
int threadCount) {
|
||||||
this(solrServerUrl, null, queueSize, threadCount);
|
this(solrServerUrl, null, queueSize, threadCount);
|
||||||
|
@ -104,6 +107,10 @@ public class ConcurrentUpdateSolrClient extends SolrClient {
|
||||||
internalHttpClient = true;
|
internalHttpClient = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Builder} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public ConcurrentUpdateSolrClient(String solrServerUrl,
|
public ConcurrentUpdateSolrClient(String solrServerUrl,
|
||||||
HttpClient client, int queueSize, int threadCount) {
|
HttpClient client, int queueSize, int threadCount) {
|
||||||
this(solrServerUrl, client, queueSize, threadCount, ExecutorUtil.newMDCAwareCachedThreadPool(
|
this(solrServerUrl, client, queueSize, threadCount, ExecutorUtil.newMDCAwareCachedThreadPool(
|
||||||
|
@ -113,7 +120,10 @@ public class ConcurrentUpdateSolrClient extends SolrClient {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Uses the supplied HttpClient to send documents to the Solr server.
|
* Uses the supplied HttpClient to send documents to the Solr server.
|
||||||
|
*
|
||||||
|
* @deprecated use {@link Builder} instead.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public ConcurrentUpdateSolrClient(String solrServerUrl,
|
public ConcurrentUpdateSolrClient(String solrServerUrl,
|
||||||
HttpClient client, int queueSize, int threadCount, ExecutorService es) {
|
HttpClient client, int queueSize, int threadCount, ExecutorService es) {
|
||||||
this(solrServerUrl, client, queueSize, threadCount, es, false);
|
this(solrServerUrl, client, queueSize, threadCount, es, false);
|
||||||
|
@ -121,16 +131,30 @@ public class ConcurrentUpdateSolrClient extends SolrClient {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Uses the supplied HttpClient to send documents to the Solr server.
|
* Uses the supplied HttpClient to send documents to the Solr server.
|
||||||
|
*
|
||||||
|
* @deprecated use {@link Builder} instead. This will soon be a
|
||||||
|
* protected method, and will only be available for use in implementing subclasses.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public ConcurrentUpdateSolrClient(String solrServerUrl,
|
public ConcurrentUpdateSolrClient(String solrServerUrl,
|
||||||
HttpClient client, int queueSize, int threadCount, ExecutorService es, boolean streamDeletes) {
|
HttpClient client, int queueSize, int threadCount, ExecutorService es, boolean streamDeletes) {
|
||||||
this.client = new HttpSolrClient(solrServerUrl, client);
|
this.internalHttpClient = (client == null);
|
||||||
|
this.client = new HttpSolrClient.Builder(solrServerUrl)
|
||||||
|
.withHttpClient(client)
|
||||||
|
.build();
|
||||||
this.client.setFollowRedirects(false);
|
this.client.setFollowRedirects(false);
|
||||||
queue = new LinkedBlockingQueue<>(queueSize);
|
queue = new LinkedBlockingQueue<>(queueSize);
|
||||||
this.threadCount = threadCount;
|
this.threadCount = threadCount;
|
||||||
runners = new LinkedList<>();
|
runners = new LinkedList<>();
|
||||||
scheduler = es;
|
|
||||||
this.streamDeletes = streamDeletes;
|
this.streamDeletes = streamDeletes;
|
||||||
|
|
||||||
|
if (es != null) {
|
||||||
|
scheduler = es;
|
||||||
|
shutdownExecutor = false;
|
||||||
|
} else {
|
||||||
|
scheduler = ExecutorUtil.newMDCAwareCachedThreadPool(new SolrjNamedThreadFactory("concurrentUpdateScheduler"));
|
||||||
|
shutdownExecutor = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<String> getQueryParams() {
|
public Set<String> getQueryParams() {
|
||||||
|
@ -274,6 +298,7 @@ public class ConcurrentUpdateSolrClient extends SolrClient {
|
||||||
|
|
||||||
method = new HttpPost(client.getBaseURL() + "/update"
|
method = new HttpPost(client.getBaseURL() + "/update"
|
||||||
+ requestParams.toQueryString());
|
+ requestParams.toQueryString());
|
||||||
|
|
||||||
method.setEntity(template);
|
method.setEntity(template);
|
||||||
method.addHeader("User-Agent", HttpSolrClient.AGENT);
|
method.addHeader("User-Agent", HttpSolrClient.AGENT);
|
||||||
method.addHeader("Content-Type", contentType);
|
method.addHeader("Content-Type", contentType);
|
||||||
|
@ -530,4 +555,91 @@ public class ConcurrentUpdateSolrClient extends SolrClient {
|
||||||
public void setRequestWriter(RequestWriter requestWriter) {
|
public void setRequestWriter(RequestWriter requestWriter) {
|
||||||
client.setRequestWriter(requestWriter);
|
client.setRequestWriter(requestWriter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs {@link ConcurrentUpdateSolrClient} instances from provided configuration.
|
||||||
|
*/
|
||||||
|
public static class Builder {
|
||||||
|
private String baseSolrUrl;
|
||||||
|
private HttpClient httpClient;
|
||||||
|
private int queueSize;
|
||||||
|
private int threadCount;
|
||||||
|
private ExecutorService executorService;
|
||||||
|
private boolean streamDeletes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a Builder object, based on the provided Solr URL.
|
||||||
|
*
|
||||||
|
* @param baseSolrUrl the base URL of the Solr server that will be targeted by any created clients.
|
||||||
|
*/
|
||||||
|
public Builder(String baseSolrUrl) {
|
||||||
|
this.baseSolrUrl = baseSolrUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides a {@link HttpClient} for the builder to use when creating clients.
|
||||||
|
*/
|
||||||
|
public Builder withHttpClient(HttpClient httpClient) {
|
||||||
|
this.httpClient = httpClient;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of documents to batch together before sending to Solr.
|
||||||
|
*/
|
||||||
|
public Builder withQueueSize(int queueSize) {
|
||||||
|
if (queueSize <= 0) {
|
||||||
|
throw new IllegalArgumentException("queueSize must be a positive integer.");
|
||||||
|
}
|
||||||
|
this.queueSize = queueSize;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of threads used to empty {@link ConcurrentUpdateSolrClient}s queue.
|
||||||
|
*/
|
||||||
|
public Builder withThreadCount(int threadCount) {
|
||||||
|
if (threadCount <= 0) {
|
||||||
|
throw new IllegalArgumentException("threadCount must be a positive integer.");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.threadCount = threadCount;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides the {@link ExecutorService} for clients to use when servicing requests.
|
||||||
|
*/
|
||||||
|
public Builder withExecutorService(ExecutorService executorService) {
|
||||||
|
this.executorService = executorService;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configures created clients to always stream delete requests.
|
||||||
|
*/
|
||||||
|
public Builder alwaysStreamDeletes() {
|
||||||
|
this.streamDeletes = true;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configures created clients to not stream delete requests.
|
||||||
|
*/
|
||||||
|
public Builder neverStreamDeletes() {
|
||||||
|
this.streamDeletes = false;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a {@link ConcurrentUpdateSolrClient} based on the provided configuration options.
|
||||||
|
*/
|
||||||
|
public ConcurrentUpdateSolrClient build() {
|
||||||
|
if (baseSolrUrl == null) {
|
||||||
|
throw new IllegalArgumentException("Cannot create HttpSolrClient without a valid baseSolrUrl!");
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ConcurrentUpdateSolrClient(baseSolrUrl, httpClient, queueSize, threadCount, executorService, streamDeletes);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,23 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.solr.client.solrj.impl;
|
package org.apache.solr.client.solrj.impl;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.lang.invoke.MethodHandles;
|
||||||
|
import java.net.ConnectException;
|
||||||
|
import java.net.SocketTimeoutException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.http.Header;
|
import org.apache.http.Header;
|
||||||
import org.apache.http.HttpEntity;
|
import org.apache.http.HttpEntity;
|
||||||
|
@ -61,24 +78,6 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.slf4j.MDC;
|
import org.slf4j.MDC;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.UnsupportedEncodingException;
|
|
||||||
import java.lang.invoke.MethodHandles;
|
|
||||||
import java.net.ConnectException;
|
|
||||||
import java.net.SocketTimeoutException;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.concurrent.Callable;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
import java.util.concurrent.Future;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A SolrClient implementation that talks directly to a Solr server via HTTP
|
* A SolrClient implementation that talks directly to a Solr server via HTTP
|
||||||
*
|
*
|
||||||
|
@ -157,16 +156,35 @@ public class HttpSolrClient extends SolrClient {
|
||||||
* The URL of the Solr server. For example, "
|
* The URL of the Solr server. For example, "
|
||||||
* <code>http://localhost:8983/solr/</code>" if you are using the
|
* <code>http://localhost:8983/solr/</code>" if you are using the
|
||||||
* standard distribution Solr webapp on your local machine.
|
* standard distribution Solr webapp on your local machine.
|
||||||
|
* @deprecated use {@link Builder} instead.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public HttpSolrClient(String baseURL) {
|
public HttpSolrClient(String baseURL) {
|
||||||
this(baseURL, null, new BinaryResponseParser());
|
this(baseURL, null, new BinaryResponseParser());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Builder} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public HttpSolrClient(String baseURL, HttpClient client) {
|
public HttpSolrClient(String baseURL, HttpClient client) {
|
||||||
this(baseURL, client, new BinaryResponseParser());
|
this(baseURL, client, new BinaryResponseParser());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Builder} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public HttpSolrClient(String baseURL, HttpClient client, ResponseParser parser) {
|
public HttpSolrClient(String baseURL, HttpClient client, ResponseParser parser) {
|
||||||
|
this(baseURL, client, parser, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Builder} instead. This will soon be a 'protected'
|
||||||
|
* method, and will only be available for use in implementing subclasses.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public HttpSolrClient(String baseURL, HttpClient client, ResponseParser parser, boolean allowCompression) {
|
||||||
this.baseUrl = baseURL;
|
this.baseUrl = baseURL;
|
||||||
if (baseUrl.endsWith("/")) {
|
if (baseUrl.endsWith("/")) {
|
||||||
baseUrl = baseUrl.substring(0, baseUrl.length() - 1);
|
baseUrl = baseUrl.substring(0, baseUrl.length() - 1);
|
||||||
|
@ -468,7 +486,7 @@ public class HttpSolrClient extends SolrClient {
|
||||||
|
|
||||||
protected NamedList<Object> executeMethod(HttpRequestBase method, final ResponseParser processor) throws SolrServerException {
|
protected NamedList<Object> executeMethod(HttpRequestBase method, final ResponseParser processor) throws SolrServerException {
|
||||||
method.addHeader("User-Agent", AGENT);
|
method.addHeader("User-Agent", AGENT);
|
||||||
|
|
||||||
HttpEntity entity = null;
|
HttpEntity entity = null;
|
||||||
InputStream respBody = null;
|
InputStream respBody = null;
|
||||||
boolean shouldClose = true;
|
boolean shouldClose = true;
|
||||||
|
@ -752,4 +770,60 @@ public class HttpSolrClient extends SolrClient {
|
||||||
super(code, "Error from server at " + remoteHost + ": " + msg, th);
|
super(code, "Error from server at " + remoteHost + ": " + msg, th);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs {@link HttpSolrClient} instances from provided configuration.
|
||||||
|
*/
|
||||||
|
public static class Builder {
|
||||||
|
private String baseSolrUrl;
|
||||||
|
private HttpClient httpClient;
|
||||||
|
private ResponseParser responseParser;
|
||||||
|
private boolean compression;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a Builder object, based on the provided Solr URL.
|
||||||
|
*
|
||||||
|
* By default, compression is not enabled in created HttpSolrClient objects.
|
||||||
|
*
|
||||||
|
* @param baseSolrUrl the base URL of the Solr server that will be targeted by any created clients.
|
||||||
|
*/
|
||||||
|
public Builder(String baseSolrUrl) {
|
||||||
|
this.baseSolrUrl = baseSolrUrl;
|
||||||
|
this.responseParser = new BinaryResponseParser();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides a {@link HttpClient} for the builder to use when creating clients.
|
||||||
|
*/
|
||||||
|
public Builder withHttpClient(HttpClient httpClient) {
|
||||||
|
this.httpClient = httpClient;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides a {@link ResponseParser} for created clients to use when handling requests.
|
||||||
|
*/
|
||||||
|
public Builder withResponseParser(ResponseParser responseParser) {
|
||||||
|
this.responseParser = responseParser;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Chooses whether created {@link HttpSolrClient}s use compression by default.
|
||||||
|
*/
|
||||||
|
public Builder allowCompression(boolean compression) {
|
||||||
|
this.compression = compression;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a {@link HttpSolrClient} based on provided configuration.
|
||||||
|
*/
|
||||||
|
public HttpSolrClient build() {
|
||||||
|
if (baseSolrUrl == null) {
|
||||||
|
throw new IllegalArgumentException("Cannot create HttpSolrClient without a valid baseSolrUrl!");
|
||||||
|
}
|
||||||
|
return new HttpSolrClient(baseSolrUrl, httpClient, responseParser, compression);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,19 +16,6 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.solr.client.solrj.impl;
|
package org.apache.solr.client.solrj.impl;
|
||||||
|
|
||||||
import org.apache.http.client.HttpClient;
|
|
||||||
import org.apache.solr.client.solrj.*;
|
|
||||||
import org.apache.solr.client.solrj.request.IsUpdateRequest;
|
|
||||||
import org.apache.solr.client.solrj.request.RequestWriter;
|
|
||||||
import org.apache.solr.client.solrj.response.QueryResponse;
|
|
||||||
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.NamedList;
|
|
||||||
import org.apache.solr.common.util.SolrjNamedThreadFactory;
|
|
||||||
import org.apache.solr.common.SolrException;
|
|
||||||
import org.slf4j.MDC;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
import java.net.ConnectException;
|
import java.net.ConnectException;
|
||||||
|
@ -36,9 +23,36 @@ import java.net.MalformedURLException;
|
||||||
import java.net.SocketException;
|
import java.net.SocketException;
|
||||||
import java.net.SocketTimeoutException;
|
import java.net.SocketTimeoutException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.concurrent.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.*;
|
|
||||||
|
import org.apache.http.client.HttpClient;
|
||||||
|
import org.apache.solr.client.solrj.ResponseParser;
|
||||||
|
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.request.IsUpdateRequest;
|
||||||
|
import org.apache.solr.client.solrj.request.RequestWriter;
|
||||||
|
import org.apache.solr.client.solrj.response.QueryResponse;
|
||||||
|
import org.apache.solr.common.SolrException;
|
||||||
|
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.NamedList;
|
||||||
|
import org.apache.solr.common.util.SolrjNamedThreadFactory;
|
||||||
|
import org.slf4j.MDC;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* LBHttpSolrClient or "LoadBalanced HttpSolrClient" is a load balancing wrapper around
|
* LBHttpSolrClient or "LoadBalanced HttpSolrClient" is a load balancing wrapper around
|
||||||
|
@ -206,19 +220,31 @@ public class LBHttpSolrClient extends SolrClient {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Builder} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public LBHttpSolrClient(String... solrServerUrls) throws MalformedURLException {
|
public LBHttpSolrClient(String... solrServerUrls) throws MalformedURLException {
|
||||||
this(null, solrServerUrls);
|
this(null, solrServerUrls);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** The provided httpClient should use a multi-threaded connection manager */
|
/**
|
||||||
|
* The provided httpClient should use a multi-threaded connection manager
|
||||||
|
* @deprecated use {@link Builder} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public LBHttpSolrClient(HttpClient httpClient, String... solrServerUrl) {
|
public LBHttpSolrClient(HttpClient httpClient, String... solrServerUrl) {
|
||||||
this(httpClient, new BinaryResponseParser(), solrServerUrl);
|
this(httpClient, new BinaryResponseParser(), solrServerUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** The provided httpClient should use a multi-threaded connection manager */
|
/**
|
||||||
|
* The provided httpClient should use a multi-threaded connection manager
|
||||||
|
* @deprecated use {@link Builder} instead. This will soon be a protected
|
||||||
|
* method and will only be available for use in implementing subclasses.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public LBHttpSolrClient(HttpClient httpClient, ResponseParser parser, String... solrServerUrl) {
|
public LBHttpSolrClient(HttpClient httpClient, ResponseParser parser, String... solrServerUrl) {
|
||||||
clientIsInternal = (httpClient == null);
|
clientIsInternal = (httpClient == null);
|
||||||
this.parser = parser;
|
|
||||||
if (httpClient == null) {
|
if (httpClient == null) {
|
||||||
ModifiableSolrParams params = new ModifiableSolrParams();
|
ModifiableSolrParams params = new ModifiableSolrParams();
|
||||||
if (solrServerUrl.length > 1) {
|
if (solrServerUrl.length > 1) {
|
||||||
|
@ -231,6 +257,9 @@ public class LBHttpSolrClient extends SolrClient {
|
||||||
} else {
|
} else {
|
||||||
this.httpClient = httpClient;
|
this.httpClient = httpClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.parser = parser;
|
||||||
|
|
||||||
for (String s : solrServerUrl) {
|
for (String s : solrServerUrl) {
|
||||||
ServerWrapper wrapper = new ServerWrapper(makeSolrClient(s));
|
ServerWrapper wrapper = new ServerWrapper(makeSolrClient(s));
|
||||||
aliveServers.put(wrapper.getKey(), wrapper);
|
aliveServers.put(wrapper.getKey(), wrapper);
|
||||||
|
@ -260,7 +289,10 @@ public class LBHttpSolrClient extends SolrClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected HttpSolrClient makeSolrClient(String server) {
|
protected HttpSolrClient makeSolrClient(String server) {
|
||||||
HttpSolrClient client = new HttpSolrClient(server, httpClient, parser);
|
HttpSolrClient client = new HttpSolrClient.Builder(server)
|
||||||
|
.withHttpClient(httpClient)
|
||||||
|
.withResponseParser(parser)
|
||||||
|
.build();
|
||||||
if (requestWriter != null) {
|
if (requestWriter != null) {
|
||||||
client.setRequestWriter(requestWriter);
|
client.setRequestWriter(requestWriter);
|
||||||
}
|
}
|
||||||
|
@ -717,4 +749,64 @@ public class LBHttpSolrClient extends SolrClient {
|
||||||
private static final int CHECK_INTERVAL = 60 * 1000; //1 minute between checks
|
private static final int CHECK_INTERVAL = 60 * 1000; //1 minute between checks
|
||||||
private static final int NONSTANDARD_PING_LIMIT = 5; // number of times we'll ping dead servers not in the server list
|
private static final int NONSTANDARD_PING_LIMIT = 5; // number of times we'll ping dead servers not in the server list
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs {@link LBHttpSolrClient} instances from provided configuration.
|
||||||
|
*/
|
||||||
|
public static class Builder {
|
||||||
|
private final List<String> baseSolrUrls;
|
||||||
|
private HttpClient httpClient;
|
||||||
|
private ResponseParser responseParser;
|
||||||
|
|
||||||
|
public Builder() {
|
||||||
|
this.baseSolrUrls = new ArrayList<String>();
|
||||||
|
this.responseParser = new BinaryResponseParser();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provide a Solr endpoint to be used when configuring {@link LBHttpSolrClient} instances.
|
||||||
|
*
|
||||||
|
* Method may be called multiple times. All provided values will be used.
|
||||||
|
*/
|
||||||
|
public Builder withBaseSolrUrl(String baseSolrUrl) {
|
||||||
|
this.baseSolrUrls.add(baseSolrUrl);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provide Solr endpoints to be used when configuring {@link LBHttpSolrClient} instances.
|
||||||
|
*
|
||||||
|
* Method may be called multiple times. All provided values will be used.
|
||||||
|
*/
|
||||||
|
public Builder withBaseSolrUrls(String... solrUrls) {
|
||||||
|
for (String baseSolrUrl : solrUrls) {
|
||||||
|
this.baseSolrUrls.add(baseSolrUrl);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides a {@link HttpClient} for the builder to use when creating clients.
|
||||||
|
*/
|
||||||
|
public Builder withHttpClient(HttpClient httpClient) {
|
||||||
|
this.httpClient = httpClient;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides a {@link ResponseParser} for created clients to use when handling requests.
|
||||||
|
*/
|
||||||
|
public Builder withResponseParser(ResponseParser responseParser) {
|
||||||
|
this.responseParser = responseParser;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a {@link HttpSolrClient} based on provided configuration.
|
||||||
|
*/
|
||||||
|
public LBHttpSolrClient build() {
|
||||||
|
final String[] baseUrlArray = new String[baseSolrUrls.size()];
|
||||||
|
return new LBHttpSolrClient(httpClient, responseParser, baseSolrUrls.toArray(baseUrlArray));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ import java.io.Serializable;
|
||||||
import java.lang.invoke.MethodHandles;
|
import java.lang.invoke.MethodHandles;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
|
||||||
import org.apache.solr.client.solrj.SolrClient;
|
import org.apache.solr.client.solrj.SolrClient;
|
||||||
import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
||||||
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
||||||
|
@ -44,7 +44,9 @@ public class SolrClientCache implements Serializable {
|
||||||
if (solrClients.containsKey(zkHost)) {
|
if (solrClients.containsKey(zkHost)) {
|
||||||
client = (CloudSolrClient) solrClients.get(zkHost);
|
client = (CloudSolrClient) solrClients.get(zkHost);
|
||||||
} else {
|
} else {
|
||||||
client = new CloudSolrClient(zkHost);
|
client = new CloudSolrClient.Builder()
|
||||||
|
.withZkHost(zkHost)
|
||||||
|
.build();
|
||||||
client.connect();
|
client.connect();
|
||||||
solrClients.put(zkHost, client);
|
solrClients.put(zkHost, client);
|
||||||
}
|
}
|
||||||
|
@ -57,7 +59,8 @@ public class SolrClientCache implements Serializable {
|
||||||
if (solrClients.containsKey(host)) {
|
if (solrClients.containsKey(host)) {
|
||||||
client = (HttpSolrClient) solrClients.get(host);
|
client = (HttpSolrClient) solrClients.get(host);
|
||||||
} else {
|
} else {
|
||||||
client = new HttpSolrClient(host);
|
client = new HttpSolrClient.Builder(host)
|
||||||
|
.build();
|
||||||
solrClients.put(host, client);
|
solrClients.put(host, client);
|
||||||
}
|
}
|
||||||
return client;
|
return client;
|
||||||
|
|
|
@ -29,7 +29,7 @@ import org.apache.solr.client.solrj.SolrClient;
|
||||||
import org.apache.solr.client.solrj.SolrQuery;
|
import org.apache.solr.client.solrj.SolrQuery;
|
||||||
import org.apache.solr.client.solrj.SolrServerException;
|
import org.apache.solr.client.solrj.SolrServerException;
|
||||||
import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
||||||
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
import org.apache.solr.client.solrj.impl.HttpSolrClient.Builder;
|
||||||
import org.apache.solr.client.solrj.response.QueryResponse;
|
import org.apache.solr.client.solrj.response.QueryResponse;
|
||||||
import org.apache.solr.common.util.SimpleOrderedMap;
|
import org.apache.solr.common.util.SimpleOrderedMap;
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ class DatabaseMetaDataImpl implements DatabaseMetaData {
|
||||||
for (String node : liveNodes) {
|
for (String node : liveNodes) {
|
||||||
try {
|
try {
|
||||||
String nodeURL = cloudSolrClient.getZkStateReader().getBaseUrlForNodeName(node);
|
String nodeURL = cloudSolrClient.getZkStateReader().getBaseUrlForNodeName(node);
|
||||||
solrClient = new HttpSolrClient(nodeURL);
|
solrClient = new Builder(nodeURL).build();
|
||||||
|
|
||||||
QueryResponse rsp = solrClient.query(sysQuery);
|
QueryResponse rsp = solrClient.query(sysQuery);
|
||||||
return String.valueOf(((SimpleOrderedMap) rsp.getResponse().get("lucene")).get("solr-spec-version"));
|
return String.valueOf(((SimpleOrderedMap) rsp.getResponse().get("lucene")).get("solr-spec-version"));
|
||||||
|
|
|
@ -34,6 +34,7 @@ import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
||||||
|
import org.apache.solr.client.solrj.impl.CloudSolrClient.Builder;
|
||||||
import org.apache.solr.client.solrj.io.SolrClientCache;
|
import org.apache.solr.client.solrj.io.SolrClientCache;
|
||||||
import org.apache.solr.client.solrj.io.Tuple;
|
import org.apache.solr.client.solrj.io.Tuple;
|
||||||
import org.apache.solr.client.solrj.io.comp.ComparatorOrder;
|
import org.apache.solr.client.solrj.io.comp.ComparatorOrder;
|
||||||
|
@ -236,7 +237,9 @@ public class CloudSolrStream extends TupleStream implements Expressible {
|
||||||
if(this.cache != null) {
|
if(this.cache != null) {
|
||||||
this.cloudSolrClient = this.cache.getCloudSolrClient(zkHost);
|
this.cloudSolrClient = this.cache.getCloudSolrClient(zkHost);
|
||||||
} else {
|
} else {
|
||||||
this.cloudSolrClient = new CloudSolrClient(zkHost);
|
this.cloudSolrClient = new Builder()
|
||||||
|
.withZkHost(zkHost)
|
||||||
|
.build();
|
||||||
this.cloudSolrClient.connect();
|
this.cloudSolrClient.connect();
|
||||||
}
|
}
|
||||||
constructStreams();
|
constructStreams();
|
||||||
|
@ -476,4 +479,4 @@ public class CloudSolrStream extends TupleStream implements Expressible {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,6 @@ package org.apache.solr.client.solrj.io.stream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -27,6 +26,7 @@ import java.util.Collections;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
||||||
|
import org.apache.solr.client.solrj.impl.CloudSolrClient.Builder;
|
||||||
import org.apache.solr.client.solrj.io.SolrClientCache;
|
import org.apache.solr.client.solrj.io.SolrClientCache;
|
||||||
import org.apache.solr.client.solrj.io.Tuple;
|
import org.apache.solr.client.solrj.io.Tuple;
|
||||||
import org.apache.solr.client.solrj.io.comp.ComparatorOrder;
|
import org.apache.solr.client.solrj.io.comp.ComparatorOrder;
|
||||||
|
@ -281,7 +281,9 @@ public class FacetStream extends TupleStream implements Expressible {
|
||||||
if(cache != null) {
|
if(cache != null) {
|
||||||
cloudSolrClient = cache.getCloudSolrClient(zkHost);
|
cloudSolrClient = cache.getCloudSolrClient(zkHost);
|
||||||
} else {
|
} else {
|
||||||
cloudSolrClient = new CloudSolrClient(zkHost);
|
cloudSolrClient = new Builder()
|
||||||
|
.withZkHost(zkHost)
|
||||||
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
FieldComparator[] adjustedSorts = adjustSorts(buckets, bucketSorts);
|
FieldComparator[] adjustedSorts = adjustSorts(buckets, bucketSorts);
|
||||||
|
@ -479,4 +481,4 @@ public class FacetStream extends TupleStream implements Expressible {
|
||||||
return bucketSorts[0];
|
return bucketSorts[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,7 @@ public class SolrStream extends TupleStream {
|
||||||
|
|
||||||
|
|
||||||
if(cache == null) {
|
if(cache == null) {
|
||||||
client = new HttpSolrClient(baseUrl);
|
client = new HttpSolrClient.Builder(baseUrl).build();
|
||||||
} else {
|
} else {
|
||||||
client = cache.getHttpSolrClient(baseUrl);
|
client = cache.getHttpSolrClient(baseUrl);
|
||||||
}
|
}
|
||||||
|
@ -230,4 +230,4 @@ public class SolrStream extends TupleStream {
|
||||||
|
|
||||||
return fields;
|
return fields;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
||||||
|
import org.apache.solr.client.solrj.impl.CloudSolrClient.Builder;
|
||||||
import org.apache.solr.client.solrj.io.SolrClientCache;
|
import org.apache.solr.client.solrj.io.SolrClientCache;
|
||||||
import org.apache.solr.client.solrj.io.Tuple;
|
import org.apache.solr.client.solrj.io.Tuple;
|
||||||
import org.apache.solr.client.solrj.io.comp.StreamComparator;
|
import org.apache.solr.client.solrj.io.comp.StreamComparator;
|
||||||
|
@ -162,7 +163,9 @@ public class StatsStream extends TupleStream implements Expressible {
|
||||||
if(cache != null) {
|
if(cache != null) {
|
||||||
cloudSolrClient = cache.getCloudSolrClient(zkHost);
|
cloudSolrClient = cache.getCloudSolrClient(zkHost);
|
||||||
} else {
|
} else {
|
||||||
cloudSolrClient = new CloudSolrClient(zkHost);
|
cloudSolrClient = new Builder()
|
||||||
|
.withZkHost(zkHost)
|
||||||
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
ModifiableSolrParams params = getParams(this.props);
|
ModifiableSolrParams params = getParams(this.props);
|
||||||
|
@ -290,4 +293,4 @@ public class StatsStream extends TupleStream implements Expressible {
|
||||||
map.put(stat+"("+field+")", val);
|
map.put(stat+"("+field+")", val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ import java.util.TreeSet;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
import org.apache.solr.client.solrj.impl.CloudSolrClient.Builder;
|
||||||
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
import org.apache.solr.client.solrj.impl.HttpSolrClient;
|
||||||
import org.apache.solr.client.solrj.io.Tuple;
|
import org.apache.solr.client.solrj.io.Tuple;
|
||||||
import org.apache.solr.client.solrj.io.comp.ComparatorOrder;
|
import org.apache.solr.client.solrj.io.comp.ComparatorOrder;
|
||||||
|
@ -218,7 +218,9 @@ public class TopicStream extends CloudSolrStream implements Expressible {
|
||||||
if(cache != null) {
|
if(cache != null) {
|
||||||
cloudSolrClient = cache.getCloudSolrClient(zkHost);
|
cloudSolrClient = cache.getCloudSolrClient(zkHost);
|
||||||
} else {
|
} else {
|
||||||
cloudSolrClient = new CloudSolrClient(zkHost);
|
cloudSolrClient = new Builder()
|
||||||
|
.withZkHost(zkHost)
|
||||||
|
.build();
|
||||||
this.cloudSolrClient.connect();
|
this.cloudSolrClient.connect();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -474,4 +476,4 @@ public class TopicStream extends CloudSolrStream implements Expressible {
|
||||||
throw new IOException(e);
|
throw new IOException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ import java.util.Map;
|
||||||
|
|
||||||
import org.apache.solr.client.solrj.SolrServerException;
|
import org.apache.solr.client.solrj.SolrServerException;
|
||||||
import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
import org.apache.solr.client.solrj.impl.CloudSolrClient;
|
||||||
|
import org.apache.solr.client.solrj.impl.CloudSolrClient.Builder;
|
||||||
import org.apache.solr.client.solrj.io.SolrClientCache;
|
import org.apache.solr.client.solrj.io.SolrClientCache;
|
||||||
import org.apache.solr.client.solrj.io.Tuple;
|
import org.apache.solr.client.solrj.io.Tuple;
|
||||||
import org.apache.solr.client.solrj.io.comp.StreamComparator;
|
import org.apache.solr.client.solrj.io.comp.StreamComparator;
|
||||||
|
@ -219,7 +220,9 @@ public class UpdateStream extends TupleStream implements Expressible {
|
||||||
if(this.cache != null) {
|
if(this.cache != null) {
|
||||||
this.cloudSolrClient = this.cache.getCloudSolrClient(zkHost);
|
this.cloudSolrClient = this.cache.getCloudSolrClient(zkHost);
|
||||||
} else {
|
} else {
|
||||||
this.cloudSolrClient = new CloudSolrClient(zkHost);
|
this.cloudSolrClient = new Builder()
|
||||||
|
.withZkHost(zkHost)
|
||||||
|
.build();
|
||||||
this.cloudSolrClient.connect();
|
this.cloudSolrClient.connect();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ public class SolrExampleBinaryTest extends SolrExampleTests {
|
||||||
try {
|
try {
|
||||||
// setup the server...
|
// setup the server...
|
||||||
String url = jetty.getBaseUrl().toString() + "/collection1";
|
String url = jetty.getBaseUrl().toString() + "/collection1";
|
||||||
HttpSolrClient client = new HttpSolrClient( url );
|
HttpSolrClient client = getHttpSolrClient(url);
|
||||||
client.setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT);
|
client.setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT);
|
||||||
client.setDefaultMaxConnectionsPerHost(100);
|
client.setDefaultMaxConnectionsPerHost(100);
|
||||||
client.setMaxTotalConnections(100);
|
client.setMaxTotalConnections(100);
|
||||||
|
|
|
@ -220,7 +220,7 @@ abstract public class SolrExampleTests extends SolrExampleTestsBase
|
||||||
if (jetty != null) {
|
if (jetty != null) {
|
||||||
// check system wide system handler + "/admin/info/system"
|
// check system wide system handler + "/admin/info/system"
|
||||||
String url = jetty.getBaseUrl().toString();
|
String url = jetty.getBaseUrl().toString();
|
||||||
try (HttpSolrClient adminClient = new HttpSolrClient(url)) {
|
try (HttpSolrClient adminClient = getHttpSolrClient(url)) {
|
||||||
SolrQuery q = new SolrQuery();
|
SolrQuery q = new SolrQuery();
|
||||||
q.set("qt", "/admin/info/system");
|
q.set("qt", "/admin/info/system");
|
||||||
QueryResponse rsp = adminClient.query(q);
|
QueryResponse rsp = adminClient.query(q);
|
||||||
|
|
|
@ -37,7 +37,7 @@ public class SolrExampleXMLTest extends SolrExampleTests {
|
||||||
public SolrClient createNewSolrClient() {
|
public SolrClient createNewSolrClient() {
|
||||||
try {
|
try {
|
||||||
String url = jetty.getBaseUrl().toString() + "/collection1";
|
String url = jetty.getBaseUrl().toString() + "/collection1";
|
||||||
HttpSolrClient client = new HttpSolrClient(url);
|
HttpSolrClient client = getHttpSolrClient(url);
|
||||||
client.setUseMultiPartPost(random().nextBoolean());
|
client.setUseMultiPartPost(random().nextBoolean());
|
||||||
client.setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT);
|
client.setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT);
|
||||||
client.setDefaultMaxConnectionsPerHost(100);
|
client.setDefaultMaxConnectionsPerHost(100);
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.solr.client.solrj;
|
package org.apache.solr.client.solrj;
|
||||||
|
|
||||||
|
import static org.apache.solr.SolrTestCaseJ4.getHttpSolrClient;
|
||||||
|
|
||||||
import org.apache.http.impl.client.CloseableHttpClient;
|
import org.apache.http.impl.client.CloseableHttpClient;
|
||||||
import org.apache.lucene.util.LuceneTestCase;
|
import org.apache.lucene.util.LuceneTestCase;
|
||||||
import org.apache.solr.client.solrj.impl.HttpClientUtil;
|
import org.apache.solr.client.solrj.impl.HttpClientUtil;
|
||||||
|
@ -39,7 +41,7 @@ public class SolrExceptionTest extends LuceneTestCase {
|
||||||
// set a 1ms timeout to let the connection fail faster.
|
// set a 1ms timeout to let the connection fail faster.
|
||||||
httpClient = HttpClientUtil.createClient(null);
|
httpClient = HttpClientUtil.createClient(null);
|
||||||
HttpClientUtil.setConnectionTimeout(httpClient, 1);
|
HttpClientUtil.setConnectionTimeout(httpClient, 1);
|
||||||
SolrClient client = new HttpSolrClient("http://[ff01::114]:11235/solr/", httpClient);
|
SolrClient client = getHttpSolrClient("http://[ff01::114]:11235/solr/", httpClient);
|
||||||
SolrQuery query = new SolrQuery("test123");
|
SolrQuery query = new SolrQuery("test123");
|
||||||
client.query(query);
|
client.query(query);
|
||||||
httpClient.close();
|
httpClient.close();
|
||||||
|
|
|
@ -131,7 +131,7 @@ public class SolrSchemalessExampleTest extends SolrExampleTestsBase {
|
||||||
try {
|
try {
|
||||||
// setup the server...
|
// setup the server...
|
||||||
String url = jetty.getBaseUrl().toString() + "/collection1";
|
String url = jetty.getBaseUrl().toString() + "/collection1";
|
||||||
HttpSolrClient client = new HttpSolrClient(url);
|
HttpSolrClient client = getHttpSolrClient(url);
|
||||||
client.setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT);
|
client.setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT);
|
||||||
client.setDefaultMaxConnectionsPerHost(100);
|
client.setDefaultMaxConnectionsPerHost(100);
|
||||||
client.setMaxTotalConnections(100);
|
client.setMaxTotalConnections(100);
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue