This is an automated email from the ASF dual-hosted git repository.
gerlowskija pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/branch_9x by this push:
new 61e99d4bb54 SOLR-17066: Add 'defaultCollection' to SolrClients (#2066)
61e99d4bb54 is described below
commit 61e99d4bb54190b627699cf033f986e146916236
Author: Jason Gerlowski <[email protected]>
AuthorDate: Fri Dec 15 15:32:59 2023 -0500
SOLR-17066: Add 'defaultCollection' to SolrClients (#2066)
This commit adds a setter ('withDefaultCollection(String)') to all
SolrClient builders, and propagates the field down to each client
implementation. All SolrClient implementations now have a getter to
fetch this property ('getDefaultCollection').
This will help users replace the anti-pattern of baking the collection/
core name into their client's base URL to achieve a sort of "poor
man's" default.
---
solr/CHANGES.txt | 4 ++++
.../org/apache/solr/client/solrj/SolrClient.java | 10 ++++++++++
.../client/solrj/impl/CloudLegacySolrClient.java | 7 -------
.../solr/client/solrj/impl/CloudSolrClient.java | 6 ------
.../solrj/impl/ConcurrentUpdateHttp2SolrClient.java | 9 +++++++++
.../solrj/impl/ConcurrentUpdateSolrClient.java | 2 ++
.../solr/client/solrj/impl/Http2SolrClient.java | 9 +++++++++
.../solr/client/solrj/impl/HttpSolrClient.java | 2 ++
.../solr/client/solrj/impl/LBHttp2SolrClient.java | 21 +++++++++++++--------
.../solr/client/solrj/impl/LBHttpSolrClient.java | 4 ++++
.../apache/solr/client/solrj/impl/LBSolrClient.java | 1 +
.../solr/client/solrj/impl/SolrClientBuilder.java | 6 ++++++
.../solrj/impl/CloudHttp2SolrClientBuilderTest.java | 11 +++++++++++
.../solrj/impl/CloudSolrClientBuilderTest.java | 10 ++++++++++
.../impl/ConcurrentUpdateSolrClientBuilderTest.java | 11 +++++++++++
.../solrj/impl/HttpSolrClientBuilderTest.java | 9 +++++++++
.../solrj/impl/LBHttpSolrClientBuilderTest.java | 11 +++++++++++
17 files changed, 112 insertions(+), 21 deletions(-)
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 2f529bef7dd..55fa63a93c4 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -55,6 +55,10 @@ Improvements
* SOLR-17063: Do not retain log param references in LogWatcher (Michael Gibney)
+* SOLR-17066: SolrClient builders now allow users to specify a "default"
collection or core
+ using the `withDefaultCollection` method. This is preferable to including
the collection
+ in the base URL accepted by certain client implementations. (Jason Gerlowski)
+
Optimizations
---------------------
* SOLR-17084: LBSolrClient (used by CloudSolrClient) now returns the count of
core tracked as not live AKA zombies
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/SolrClient.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/SolrClient.java
index f79bba0a64b..a134e2f001a 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/SolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/SolrClient.java
@@ -52,6 +52,7 @@ public abstract class SolrClient implements Serializable,
Closeable {
private static final long serialVersionUID = 1L;
private DocumentObjectBinder binder;
+ protected String defaultCollection;
/**
* Adds a collection of documents
@@ -1215,4 +1216,13 @@ public abstract class SolrClient implements
Serializable, Closeable {
public SolrRequest.SolrClientContext getContext() {
return SolrRequest.SolrClientContext.CLIENT;
}
+
+ /**
+ * Gets the collection used by default for collection or core-based requests
+ *
+ * <p>If no value is specified at client-creation time, this method will
return null.
+ */
+ public String getDefaultCollection() {
+ return defaultCollection;
+ }
}
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudLegacySolrClient.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudLegacySolrClient.java
index c1bc6811411..3547c652293 100644
---
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudLegacySolrClient.java
+++
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudLegacySolrClient.java
@@ -167,7 +167,6 @@ public class CloudLegacySolrClient extends CloudSolrClient {
protected boolean shardLeadersOnly = true;
protected boolean directUpdatesToLeadersOnly = false;
protected boolean parallelUpdates = true;
- protected String defaultCollection;
protected long retryExpiryTimeNano =
TimeUnit.NANOSECONDS.convert(3, TimeUnit.SECONDS); // 3 seconds or 3
million nanos
protected ClusterStateProvider stateProvider;
@@ -343,12 +342,6 @@ public class CloudLegacySolrClient extends CloudSolrClient
{
return this;
}
- /** Sets the default collection for request. */
- public Builder withDefaultCollection(String collection) {
- this.defaultCollection = collection;
- return this;
- }
-
/**
* Sets the Zk connection timeout
*
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java
index ee1d8911304..c00634c3559 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java
@@ -91,7 +91,6 @@ public abstract class CloudSolrClient extends SolrClient {
private static final Logger log =
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- protected volatile String defaultCollection;
// no of times collection state to be reloaded if stale state error is
received
private static final int MAX_STALE_RETRIES =
Integer.parseInt(System.getProperty("cloudSolrClientMaxStaleRetries",
"5"));
@@ -352,11 +351,6 @@ public abstract class CloudSolrClient extends SolrClient {
this.defaultCollection = collection;
}
- /** Gets the default collection for request */
- public String getDefaultCollection() {
- return defaultCollection;
- }
-
/** Gets whether direct updates are sent in parallel */
public boolean isParallelUpdates() {
return parallelUpdates;
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateHttp2SolrClient.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateHttp2SolrClient.java
index ad9f50e54e7..66fd46ce392 100644
---
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateHttp2SolrClient.java
+++
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateHttp2SolrClient.java
@@ -149,6 +149,7 @@ public class ConcurrentUpdateHttp2SolrClient extends
SolrClient {
this.runners = new ArrayDeque<>();
this.streamDeletes = builder.streamDeletes;
this.basePath = builder.baseSolrUrl;
+ this.defaultCollection = builder.defaultCollection;
this.pollQueueTimeMillis = builder.pollQueueTimeMillis;
this.stallTimeMillis = Integer.getInteger("solr.cloud.client.stallTime",
15000);
@@ -367,6 +368,7 @@ public class ConcurrentUpdateHttp2SolrClient extends
SolrClient {
@Override
public NamedList<Object> request(final SolrRequest<?> request, String
collection)
throws SolrServerException, IOException {
+ if (collection == null) collection = defaultCollection;
if (!(request instanceof UpdateRequest)) {
request.setBasePath(basePath);
return client.request(request, collection);
@@ -721,6 +723,7 @@ public class ConcurrentUpdateHttp2SolrClient extends
SolrClient {
public static class Builder {
protected Http2SolrClient client;
protected String baseSolrUrl;
+ protected String defaultCollection;
protected int queueSize = 10;
protected int threadCount;
protected ExecutorService executorService;
@@ -811,6 +814,12 @@ public class ConcurrentUpdateHttp2SolrClient extends
SolrClient {
return this;
}
+ /** Sets a default collection for collection-based requests. */
+ public Builder withDefaultCollection(String defaultCollection) {
+ this.defaultCollection = defaultCollection;
+ return this;
+ }
+
/**
* @param pollQueueTimeMillis time for an open connection to wait for
updates when the queue is
* empty.
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClient.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClient.java
index 6eac6c65014..ae6f21f7e6a 100644
---
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClient.java
+++
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClient.java
@@ -119,6 +119,7 @@ public class ConcurrentUpdateSolrClient extends SolrClient {
this.pollQueueTimeMillis = builder.pollQueueTime;
this.stallTimeMillis = Integer.getInteger("solr.cloud.client.stallTime",
15000);
+ this.defaultCollection = builder.defaultCollection;
// make sure the stall time is larger than the polling time
// to give a chance for the queue to change
@@ -487,6 +488,7 @@ public class ConcurrentUpdateSolrClient extends SolrClient {
@Override
public NamedList<Object> request(final SolrRequest<?> request, String
collection)
throws SolrServerException, IOException {
+ if (collection == null) collection = defaultCollection;
if (!(request instanceof UpdateRequest)) {
return client.request(request, collection);
}
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
index a563ab3d495..ae4e2c6d239 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
@@ -192,6 +192,7 @@ public class Http2SolrClient extends SolrClient {
this.parser = builder.responseParser;
}
updateDefaultMimeTypeForParser();
+ this.defaultCollection = builder.defaultCollection;
if (builder.requestTimeoutMillis != null) {
this.requestTimeoutMillis = builder.requestTimeoutMillis;
} else {
@@ -556,6 +557,7 @@ public class Http2SolrClient extends SolrClient {
throws SolrServerException, IOException {
solrRequest = unwrapV2Request(solrRequest);
+ if (collection == null) collection = defaultCollection;
String url = getRequestPath(solrRequest, collection);
Throwable abortCause = null;
Request req = null;
@@ -1110,6 +1112,7 @@ public class Http2SolrClient extends SolrClient {
private ExecutorService executor;
protected RequestWriter requestWriter;
protected ResponseParser responseParser;
+ protected String defaultCollection;
private Set<String> urlParamNames;
private CookieStore cookieStore = getDefaultCookieStore();
private String proxyHost;
@@ -1234,6 +1237,12 @@ public class Http2SolrClient extends SolrClient {
return this;
}
+ /** Sets a default collection for collection-based requests. */
+ public Builder withDefaultCollection(String defaultCollection) {
+ this.defaultCollection = defaultCollection;
+ return this;
+ }
+
public Builder withFollowRedirects(boolean followRedirects) {
this.followRedirects = followRedirects;
return this;
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java
index a92c628e670..0392d3aff35 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java
@@ -190,6 +190,7 @@ public class HttpSolrClient extends BaseHttpSolrClient {
this.soTimeout = builder.socketTimeoutMillis;
this.useMultiPartPost = builder.useMultiPartPost;
this.urlParamNames = builder.urlParamNames;
+ this.defaultCollection = builder.defaultCollection;
}
/**
@@ -252,6 +253,7 @@ public class HttpSolrClient extends BaseHttpSolrClient {
public NamedList<Object> request(
final SolrRequest<?> request, final ResponseParser processor, String
collection)
throws SolrServerException, IOException {
+ if (collection == null) collection = defaultCollection;
HttpRequestBase method = createMethod(request, collection);
setBasicAuthHeader(request, method);
if (request.getHeaders() != null) {
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttp2SolrClient.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttp2SolrClient.java
index c652dd9761b..f8bb3b439b8 100644
---
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttp2SolrClient.java
+++
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttp2SolrClient.java
@@ -24,7 +24,6 @@ import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.util.Arrays;
import java.util.HashSet;
-import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -95,9 +94,11 @@ public class LBHttp2SolrClient extends LBSolrClient {
this.solrClient = solrClient;
}
- private LBHttp2SolrClient(Http2SolrClient solrClient, List<String>
baseSolrUrls) {
- super(baseSolrUrls);
- this.solrClient = solrClient;
+ private LBHttp2SolrClient(Builder builder) {
+ super(Arrays.asList(builder.baseSolrUrls));
+ this.solrClient = builder.http2SolrClient;
+ this.aliveCheckIntervalMillis = builder.aliveCheckIntervalMillis;
+ this.defaultCollection = builder.defaultCollection;
}
@Override
@@ -319,6 +320,7 @@ public class LBHttp2SolrClient extends LBSolrClient {
private final String[] baseSolrUrls;
private long aliveCheckIntervalMillis =
TimeUnit.MILLISECONDS.convert(60, TimeUnit.SECONDS); // 1 minute
between checks
+ protected String defaultCollection;
public Builder(Http2SolrClient http2Client, String... baseSolrUrls) {
this.http2SolrClient = http2Client;
@@ -340,11 +342,14 @@ public class LBHttp2SolrClient extends LBSolrClient {
return this;
}
+ /** Sets a default collection for collection-based requests. */
+ public LBHttp2SolrClient.Builder withDefaultCollection(String
defaultCollection) {
+ this.defaultCollection = defaultCollection;
+ return this;
+ }
+
public LBHttp2SolrClient build() {
- LBHttp2SolrClient solrClient =
- new LBHttp2SolrClient(this.http2SolrClient,
Arrays.asList(this.baseSolrUrls));
- solrClient.aliveCheckIntervalMillis = this.aliveCheckIntervalMillis;
- return solrClient;
+ return new LBHttp2SolrClient(this);
}
}
}
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java
index 2be0c944735..12aaf0c86ef 100644
---
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java
+++
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java
@@ -93,6 +93,10 @@ public class LBHttpSolrClient extends LBSolrClient {
builder.httpClient == null
? constructClient(builder.baseSolrUrls.toArray(new String[0]))
: builder.httpClient;
+ this.defaultCollection = builder.defaultCollection;
+ if (httpSolrClientBuilder != null && this.defaultCollection != null) {
+ httpSolrClientBuilder.defaultCollection = this.defaultCollection;
+ }
this.connectionTimeoutMillis = builder.connectionTimeoutMillis;
this.soTimeoutMillis = builder.socketTimeoutMillis;
this.parser = builder.responseParser;
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBSolrClient.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBSolrClient.java
index 0bed04f10cd..fe5338b054c 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBSolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBSolrClient.java
@@ -616,6 +616,7 @@ public abstract class LBSolrClient extends SolrClient {
final int maxTries = (numServersToTry == null ? serverList.length :
numServersToTry.intValue());
int numServersTried = 0;
Map<String, ServerWrapper> justFailed = null;
+ if (collection == null) collection = defaultCollection;
boolean timeAllowedExceeded = false;
long timeAllowedNano = getTimeAllowedInNanos(request);
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientBuilder.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientBuilder.java
index d0c97f8ed22..aee3bf55f23 100644
---
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientBuilder.java
+++
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientBuilder.java
@@ -41,6 +41,7 @@ public abstract class SolrClientBuilder<B extends
SolrClientBuilder<B>> {
protected int socketTimeoutMillis = 120000; // 120 seconds
private boolean socketTimeoutMillisUpdate = false;
protected boolean followRedirects = false;
+ protected String defaultCollection;
protected Set<String> urlParamNames;
/** The solution for the unchecked cast warning. */
@@ -97,6 +98,11 @@ public abstract class SolrClientBuilder<B extends
SolrClientBuilder<B>> {
return getThis();
}
+ public B withDefaultCollection(String defaultCollection) {
+ this.defaultCollection = defaultCollection;
+ return getThis();
+ }
+
/**
* Tells {@link Builder} that created clients should obey the following
timeout when connecting to
* Solr servers.
diff --git
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudHttp2SolrClientBuilderTest.java
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudHttp2SolrClientBuilderTest.java
index 6cf26e440b6..b776755a2ed 100644
---
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudHttp2SolrClientBuilderTest.java
+++
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudHttp2SolrClientBuilderTest.java
@@ -161,4 +161,15 @@ public class CloudHttp2SolrClientBuilderTest extends
SolrTestCase {
// it's external, should be NOT closed when closing CloudSolrClient
verify(http2Client, never()).close();
}
+
+ @Test
+ public void testDefaultCollectionPassedFromBuilderToClient() throws
IOException {
+ try (CloudHttp2SolrClient createdClient =
+ new CloudHttp2SolrClient.Builder(
+ Collections.singletonList(ANY_ZK_HOST),
Optional.of(ANY_CHROOT))
+ .withDefaultCollection("aCollection")
+ .build()) {
+ assertEquals("aCollection", createdClient.getDefaultCollection());
+ }
+ }
}
diff --git
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientBuilderTest.java
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientBuilderTest.java
index b96d5762c5d..348e8e1d65e 100644
---
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientBuilderTest.java
+++
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientBuilderTest.java
@@ -101,4 +101,14 @@ public class CloudSolrClientBuilderTest extends
SolrTestCase {
assertNotNull(createdClient);
}
}
+
+ @Test
+ public void testDefaultCollectionPassedFromBuilderToClient() throws
IOException {
+ try (CloudSolrClient createdClient =
+ new Builder(Collections.singletonList(ANY_ZK_HOST),
Optional.of(ANY_CHROOT))
+ .withDefaultCollection("aCollection")
+ .build()) {
+ assertEquals("aCollection", createdClient.getDefaultCollection());
+ }
+ }
}
diff --git
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientBuilderTest.java
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientBuilderTest.java
index 902aeb61842..c6cd4779f96 100644
---
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientBuilderTest.java
+++
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientBuilderTest.java
@@ -23,6 +23,7 @@ import java.net.ServerSocket;
import java.net.SocketTimeoutException;
import java.util.concurrent.TimeUnit;
import org.apache.solr.SolrTestCase;
+import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.ConcurrentUpdateSolrClient.Builder;
import org.junit.Test;
@@ -71,4 +72,14 @@ public class ConcurrentUpdateSolrClientBuilderTest extends
SolrTestCase {
// else test passses
}
}
+
+ @Test
+ public void testDefaultCollectionPassedFromBuilderToClient() throws
IOException {
+ try (SolrClient createdClient =
+ new ConcurrentUpdateSolrClient.Builder("someurl")
+ .withDefaultCollection("aCollection")
+ .build()) {
+ assertEquals("aCollection", createdClient.getDefaultCollection());
+ }
+ }
}
diff --git
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientBuilderTest.java
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientBuilderTest.java
index eea4fcfc3b8..6aba55d47bf 100644
---
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientBuilderTest.java
+++
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientBuilderTest.java
@@ -22,6 +22,7 @@ import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.solr.SolrTestCase;
import org.apache.solr.client.solrj.ResponseParser;
+import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.impl.HttpSolrClient.Builder;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.junit.Test;
@@ -83,4 +84,12 @@ public class HttpSolrClientBuilderTest extends SolrTestCase {
assertTrue(usedParser instanceof BinaryResponseParser);
}
}
+
+ @Test
+ public void testDefaultCollectionPassedFromBuilderToClient() throws
IOException {
+ try (final SolrClient createdClient =
+ new
Builder(ANY_BASE_SOLR_URL).withDefaultCollection("aCollection").build()) {
+ assertEquals("aCollection", createdClient.getDefaultCollection());
+ }
+ }
}
diff --git
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrClientBuilderTest.java
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrClientBuilderTest.java
index 25a70f5460c..6db869cf96b 100644
---
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrClientBuilderTest.java
+++
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrClientBuilderTest.java
@@ -77,4 +77,15 @@ public class LBHttpSolrClientBuilderTest extends
SolrTestCase {
}
HttpClientUtil.close(httpClient);
}
+
+ @Test
+ public void testDefaultCollectionPassedFromBuilderToClient() throws
IOException {
+ try (LBHttpSolrClient createdClient =
+ new LBHttpSolrClient.Builder()
+ .withBaseSolrUrl(ANY_BASE_SOLR_URL)
+ .withDefaultCollection("aCollection")
+ .build()) {
+ assertEquals("aCollection", createdClient.getDefaultCollection());
+ }
+ }
}