## org.apache.solr.common.cloud
Class ClusterState

    java.lang.Object
      org.apache.solr.common.cloud.ClusterState

All Implemented Interfaces:
  JSONWriter.Writable

    public class ClusterState

extends Object
implements JSONWriter.Writable

Immutable state of the cloud. Normally you can get the state by using `ZkStateReader.getClusterState()`.

Constructor Summary
`ClusterState(Integer zkClusterStateVersion, Set<String> liveNodes, Map<String,Map<String,Slice>> collectionStates)` Use this constr when ClusterState is meant for consumption.
`ClusterState(Set<String> liveNodes, Map<String,Map<String,Slice>> collectionStates)` Use this constr when ClusterState is meant for publication.

Method Summary
`boolean` `equals(Object obj)`
`Set<String>` `getCollections()` Get collection names.
`Map<String,Map<String,Slice>>` `getCollectionStates()`
`ZkNodeProps` `getLeader(String collection, String shard)` Get properties of a shard leader for specific collection.
`Set<String>` `getLiveNodes()` Get names of the currently live nodes.
`org.apache.solr.common.cloud.ClusterState.RangeInfo` `getRanges(String collection)`
`String` `getShard(int hash, String collection)` Get shard id for hash.
`String` `getShardId(String coreNodeName)` Get shardId for core.
`Replica` `getShardProps(String collection, String coreNodeName)` Get shard properties or null if shard is not found.
`Slice` `getSlice(String collection, String slice)` Get the index Slice for collection.
`Map<String,Slice>` `getSlices(String collection)` Get all slices for collection.
`Integer` `getZkClusterStateVersion()` The version of clusterstate.json in ZooKeeper.
`int` `hashCode()`
`boolean` `liveNodesContain(String name)` Check if node is alive.
`static ClusterState` `load(Integer version, byte[] bytes, Set<String> liveNodes)` Create ClusterState from json string that is typically stored in zookeeper.
`static ClusterState` `load(SolrZkClient zkClient, Set<String> liveNodes)` Create ClusterState by reading the current state from zookeeper.
`String` `toString()`
`void` `write(JSONWriter jsonWriter)`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Constructor Detail

### ClusterState

    public ClusterState(Set<String> liveNodes,
                        Map<String,Map<String,Slice>> collectionStates)

  Use this constr when ClusterState is meant for publication. hashCode and equals will only depend on liveNodes and not clusterStateVersion.

### ClusterState

    public ClusterState(Integer zkClusterStateVersion,
                        Set<String> liveNodes,
                        Map<String,Map<String,Slice>> collectionStates)

  Use this constr when ClusterState is meant for consumption.

Method Detail

### getLeader

    public ZkNodeProps getLeader(String collection,
                                 String shard)

  Get properties of a shard leader for specific collection.

### getShardProps

    public Replica getShardProps(String collection,
                                 String coreNodeName)

  Get shard properties or null if shard is not found.

### getSlice

    public Slice getSlice(String collection,
                          String slice)

  Get the index Slice for collection.

### getSlices

    public Map<String,Slice> getSlices(String collection)

  Get all slices for collection.

### getCollections

    public Set<String> getCollections()

  Get collection names.

### getCollectionStates

    public Map<String,Map<String,Slice>> getCollectionStates()

  Returns:
    Map<collectionName, Map<sliceName,Slice>>

### getLiveNodes

    public Set<String> getLiveNodes()

  Get names of the currently live nodes.

### getShardId

    public String getShardId(String coreNodeName)

  Get shardId for core.

  Parameters:
    `coreNodeName` - in the form of nodeName_coreName

### liveNodesContain

    public boolean liveNodesContain(String name)

  Check if node is alive.

### getRanges

    public org.apache.solr.common.cloud.ClusterState.RangeInfo getRanges(String collection)

### getShard

    public String getShard(int hash,
                           String collection)

  Get shard id for hash. This is used when determining which Slice the document is to be submitted to.

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`

### load

    public static ClusterState load(SolrZkClient zkClient,
                                    Set<String> liveNodes)
                             throws org.apache.zookeeper.KeeperException,
                                    InterruptedException

  Create ClusterState by reading the current state from zookeeper.

  Throws:
    `org.apache.zookeeper.KeeperException`
    `InterruptedException`

### load

    public static ClusterState load(Integer version,
                                    byte[] bytes,
                                    Set<String> liveNodes)

  Create ClusterState from json string that is typically stored in zookeeper. Use `load(SolrZkClient, Set)` instead, unless you want to do something more when getting the data - such as get the stat, set watch, etc.

  Parameters:
    `version` - zk version of the clusterstate.json file (bytes)
    `bytes` - clusterstate.json as a byte array
    `liveNodes` - list of live nodes
  Returns:
    the ClusterState

### write

    public void write(JSONWriter jsonWriter)

  Specified by:
    `write` in interface `JSONWriter.Writable`

### getZkClusterStateVersion

    public Integer getZkClusterStateVersion()

  The version of clusterstate.json in ZooKeeper.

  Returns:
    null if ClusterState was created for publication, not consumption

### hashCode

    public int hashCode()

  Overrides:
    `hashCode` in class `Object`

### equals

    public boolean equals(Object obj)

  Overrides:
    `equals` in class `Object`