Package org.apache.solr.client.solrj.impl

## Class CloudSolrClient

- java.lang.Object
- - org.apache.solr.client.solrj.SolrClient
  - - org.apache.solr.client.solrj.impl.CloudSolrClient

All Implemented Interfaces:
  `Closeable`, `Serializable`, `AutoCloseable`

Direct Known Subclasses:
  `CloudHttp2SolrClient`, `CloudLegacySolrClient`

    public abstract class CloudSolrClient
    extends SolrClient

See Also:
  Serialized Form

### Nested Class Summary

Nested Classes
`static class` `CloudSolrClient.Builder` Constructs `CloudSolrClient` instances from provided configuration.
`static class` `CloudSolrClient.RouteException`
`static class` `CloudSolrClient.RouteResponse<T extends LBSolrClient.Req>`

### Field Summary

Fields
`protected org.apache.solr.client.solrj.impl.CloudSolrClient.StateCache` `collectionStateCache`
`protected Object[]` `locks`
`protected long` `retryExpiryTimeNano`
`static String` `STATE_VERSION`

### Fields inherited from class org.apache.solr.client.solrj.SolrClient

`defaultCollection`

### Constructor Summary

Constructors
`protected` `CloudSolrClient​(boolean updatesToLeaders, boolean parallelUpdates, boolean directUpdatesToLeadersOnly)`

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods
`void` `close()`
`CloudSolrClient.RouteResponse` `condenseResponse​(NamedList<?> response, int timeMillis)`
`protected <T extends CloudSolrClient.RouteResponse<?>> T` `condenseResponse​(NamedList<?> response, int timeMillis, Supplier<T> supplier)`
`void` `connect()` Connect to the zookeeper ensemble.
`void` `connect​(long duration, TimeUnit timeUnit)` Connect to a cluster.
`protected Map<String,​? extends LBSolrClient.Req>` `createRoutes​(UpdateRequest updateRequest, ModifiableSolrParams routableParams, DocCollection col, DocRouter router, Map<String,​List<String>> urlMap, String routeField)`
`ClusterState` `getClusterState()`
`abstract ClusterStateProvider` `getClusterStateProvider()`
`protected DocCollection` `getDocCollection​(String collection, Integer expectedVersion)`
`protected abstract LBSolrClient` `getLbClient()`
`int` `getMinAchievedReplicationFactor​(String collection, NamedList<?> resp)` Useful for determining the minimum achieved replication factor across all shards involved in processing an update request, typically useful for gauging the replication factor of a batch.
`ResponseParser` `getParser()`
`RequestWriter` `getRequestWriter()`
`protected CloudSolrClient.RouteException` `getRouteException​(SolrException.ErrorCode serverError, NamedList<Throwable> exceptions, Map<String,​? extends LBSolrClient.Req> routes)`
`Map<String,​Integer>` `getShardReplicationFactor​(String collection, NamedList<?> resp)` Walks the NamedList response after performing an update request looking for the replication factor that was achieved in each shard involved in the request.
`boolean` `isDirectUpdatesToLeadersOnly()` If true, this client has been configured such that "direct updates" will only be sent to the current leader of the corrisponding shard, and will not be retried with other replicas.
`boolean` `isParallelUpdates()` Gets whether direct updates are sent in parallel
`boolean` `isUpdatesToLeaders()` If true, this client has been configured such that it will generally prefer to send `IsUpdateRequest` requests to a shard leader, if and only if `IsUpdateRequest.isSendToLeaders()` is also true.
`protected static Object[]` `objectList​(int n)`
`NamedList<Object>` `request​(SolrRequest<?> request, String collection)` Execute a request against a Solr server for a given collection
`protected NamedList<Object>` `requestWithRetryOnStaleState​(SolrRequest<?> request, int retryCount, List<String> inputCollections)` As this class doesn't watch external collections on the client side, there's a chance that the request will fail due to cached stale state, which means the state must be refreshed from ZK and retried.
`protected NamedList<Object>` `sendRequest​(SolrRequest<?> request, List<String> inputCollections)`
`void` `setCollectionCacheTTl​(int seconds)` Deprecated. use `CloudHttp2SolrClient.Builder.withCollectionCacheTtl(int)` instead
`void` `setDefaultCollection​(String collection)` Deprecated. use `CloudHttp2SolrClient.Builder.withDefaultCollection(String)` instead
`void` `setParallelCacheRefreshes​(int n)` Deprecated. use `CloudHttp2SolrClient.Builder.setParallelCacheRefreshes(int)` instead
`void` `setParser​(ResponseParser processor)` Deprecated. use `CloudHttp2SolrClient.Builder` instead
`void` `setRequestWriter​(RequestWriter requestWriter)` Deprecated. use `CloudHttp2SolrClient.Builder` instead
`void` `setRetryExpiryTime​(int secs)` Deprecated. use `CloudHttp2SolrClient.Builder.setRetryExpiryTime(int)` instead
`protected abstract boolean` `wasCommError​(Throwable t)`

### Methods inherited from class org.apache.solr.client.solrj.SolrClient

`add, add, add, add, add, add, add, add, add, add, addBean, addBean, addBean, addBean, addBeans, addBeans, addBeans, addBeans, addBeans, addBeans, commit, commit, commit, commit, commit, commit, deleteById, deleteById, deleteById, deleteById, deleteById, deleteById, deleteById, deleteById, deleteByQuery, deleteByQuery, deleteByQuery, deleteByQuery, getBinder, getById, getById, getById, getById, getById, getById, getById, getById, getContext, getDefaultCollection, optimize, optimize, optimize, optimize, optimize, optimize, ping, ping, query, query, query, query, queryAndStreamResponse, queryAndStreamResponse, queryAndStreamResponse, request, rollback, rollback`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### STATE_VERSION

    public static final String STATE_VERSION

See Also:
  Constant Field Values

#### retryExpiryTimeNano

    protected long retryExpiryTimeNano

#### locks

    protected volatile Object[] locks

#### collectionStateCache

    protected final org.apache.solr.client.solrj.impl.CloudSolrClient.StateCache collectionStateCache

### Constructor Detail

#### CloudSolrClient

    protected CloudSolrClient​(boolean updatesToLeaders,
                              boolean parallelUpdates,
                              boolean directUpdatesToLeadersOnly)

### Method Detail

#### setRetryExpiryTime

    @Deprecated
    public void setRetryExpiryTime​(int secs)

Deprecated.
use `CloudHttp2SolrClient.Builder.setRetryExpiryTime(int)` instead
This is the time to wait to refetch the state after getting the same state version from ZK

secs

#### setCollectionCacheTTl

    @Deprecated
    public void setCollectionCacheTTl​(int seconds)

Deprecated.
use `CloudHttp2SolrClient.Builder.withCollectionCacheTtl(int)` instead
Sets the cache ttl for DocCollection Objects cached.

Parameters:
  `seconds` - ttl value in seconds

#### getLbClient

    protected abstract LBSolrClient getLbClient()

#### getClusterStateProvider

    public abstract ClusterStateProvider getClusterStateProvider()

#### getClusterState

    public ClusterState getClusterState()

#### wasCommError

    protected abstract boolean wasCommError​(Throwable t)

#### close

    public void close()
               throws IOException

Throws:
  `IOException`

#### getParser

    public ResponseParser getParser()

#### setParser

    @Deprecated
    public void setParser​(ResponseParser processor)

Deprecated.
use `CloudHttp2SolrClient.Builder` instead
Note: This setter method is not thread-safe.

Parameters:
  `processor` - Default Response Parser chosen to parse the response if the parser were not specified as part of the request.
See Also:
  `SolrRequest.getResponseParser()`

#### getRequestWriter

    public RequestWriter getRequestWriter()

#### setRequestWriter

    @Deprecated
    public void setRequestWriter​(RequestWriter requestWriter)

Deprecated.
use `CloudHttp2SolrClient.Builder` instead
Choose the `RequestWriter` to use.

Note: This setter method is not thread-safe.

#### setDefaultCollection

    @Deprecated
    public void setDefaultCollection​(String collection)

Deprecated.
use `CloudHttp2SolrClient.Builder.withDefaultCollection(String)` instead
Sets the default collection for request.

#### isParallelUpdates

    public boolean isParallelUpdates()

Gets whether direct updates are sent in parallel

#### connect

    public void connect()

Connect to the zookeeper ensemble. This is an optional method that may be used to force a connect before any other requests are sent.

#### connect

    public void connect​(long duration,
                        TimeUnit timeUnit)
                 throws TimeoutException,
                        InterruptedException

Connect to a cluster. If the cluster is not ready, retry connection up to a given timeout.

Parameters:
  `duration` - the timeout
  `timeUnit` - the units of the timeout
Throws:
  `TimeoutException` - if the cluster is not ready after the timeout
  `InterruptedException` - if the wait is interrupted

#### getRouteException

    protected CloudSolrClient.RouteException getRouteException​(SolrException.ErrorCode serverError,
                                                               NamedList<Throwable> exceptions,
                                                               Map<String,​? extends LBSolrClient.Req> routes)

#### createRoutes

    protected Map<String,​? extends LBSolrClient.Req> createRoutes​(UpdateRequest updateRequest,
                                                                        ModifiableSolrParams routableParams,
                                                                        DocCollection col,
                                                                        DocRouter router,
                                                                        Map<String,​List<String>> urlMap,
                                                                        String routeField)

#### condenseResponse

    protected <T extends CloudSolrClient.RouteResponse<?>> T condenseResponse​(NamedList<?> response,
                                                                              int timeMillis,
                                                                              Supplier<T> supplier)

#### condenseResponse

    public CloudSolrClient.RouteResponse condenseResponse​(NamedList<?> response,
                                                          int timeMillis)

#### request

    public NamedList<Object> request​(SolrRequest<?> request,
                                     String collection)
                              throws SolrServerException,
                                     IOException

Description copied from class: `SolrClient`
Execute a request against a Solr server for a given collection

Specified by:
  `request` in class `SolrClient`
Parameters:
  `request` - the request to execute
  `collection` - the collection to execute the request against
Returns:
  a `NamedList` containing the response from the server
Throws:
  `SolrServerException` - if there is an error on the server
  `IOException` - If there is a low-level I/O error.

#### requestWithRetryOnStaleState

    protected NamedList<Object> requestWithRetryOnStaleState​(SolrRequest<?> request,
                                                             int retryCount,
                                                             List<String> inputCollections)
                                                      throws SolrServerException,
                                                             IOException

As this class doesn't watch external collections on the client side, there's a chance that the request will fail due to cached stale state, which means the state must be refreshed from ZK and retried.

Throws:
  `SolrServerException`
  `IOException`

#### sendRequest

    protected NamedList<Object> sendRequest​(SolrRequest<?> request,
                                            List<String> inputCollections)
                                     throws SolrServerException,
                                            IOException

Throws:
  `SolrServerException`
  `IOException`

#### isUpdatesToLeaders

    public boolean isUpdatesToLeaders()

If true, this client has been configured such that it will generally prefer to send `IsUpdateRequest` requests to a shard leader, if and only if `IsUpdateRequest.isSendToLeaders()` is also true. If false, then this client has been configured to obey normal routing preferences when dealing with `IsUpdateRequest` requests.

See Also:
  `isDirectUpdatesToLeadersOnly()`

#### isDirectUpdatesToLeadersOnly

    public boolean isDirectUpdatesToLeadersOnly()

If true, this client has been configured such that "direct updates" will only be sent to the current leader of the corrisponding shard, and will not be retried with other replicas. This method has no effect if `isUpdatesToLeaders()` or `IsUpdateRequest.isSendToLeaders()` returns false.

A "direct update" is any update that can be sent directly to a single shard, and does not need to be broadcast to every shard. (Example: document updates or "delete by id" when using the default router; non-direct updates are things like commits and "delete by query").

NOTE: If a single `UpdateRequest` contains multiple "direct updates" for different shards, this client may break the request up and merge th resposes.

Returns:
  true if direct updates are sent to shard leaders only

#### setParallelCacheRefreshes

    @Deprecated
    public void setParallelCacheRefreshes​(int n)

Deprecated.
use `CloudHttp2SolrClient.Builder.setParallelCacheRefreshes(int)` instead
If caches are expired they are refreshed after acquiring a lock. use this to set the number of locks

#### objectList

    protected static Object[] objectList​(int n)

#### getDocCollection

    protected DocCollection getDocCollection​(String collection,
                                             Integer expectedVersion)
                                      throws SolrException

Throws:
  `SolrException`

#### getMinAchievedReplicationFactor

    public int getMinAchievedReplicationFactor​(String collection,
                                               NamedList<?> resp)

Useful for determining the minimum achieved replication factor across all shards involved in processing an update request, typically useful for gauging the replication factor of a batch.

#### getShardReplicationFactor

    public Map<String,​Integer> getShardReplicationFactor​(String collection,
                                                               NamedList<?> resp)

Walks the NamedList response after performing an update request looking for the replication factor that was achieved in each shard involved in the request. For single doc updates, there will be only one shard in the return value.