Package 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 usingZkStateReader.getClusterState()
.- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ClusterState.CollectionRef
-
Constructor Summary
Constructors Constructor Description ClusterState(Integer znodeVersion, Set<String> liveNodes, Map<String,DocCollection> collectionStates)
Use this constr when ClusterState is meant for consumption.ClusterState(Set<String> liveNodes, Map<String,ClusterState.CollectionRef> collectionStates, Integer znodeVersion)
Use this if all the collection states are not readily available and some needs to be lazily loaded
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description ClusterState
copyWith(String collectionName, DocCollection collection)
Returns a new cluster state object modified with the given collection.boolean
equals(Object obj)
void
forEachCollection(Consumer<DocCollection> consumer)
Iterate over collections.DocCollection
getCollection(String collection)
Get the named DocCollection object, or throw an exception if it doesn't exist.DocCollection
getCollectionOrNull(String collectionName)
Returns the correspondingDocCollection
object for the given collection name if such a collection exists.DocCollection
getCollectionOrNull(String collectionName, boolean allowCached)
Returns the correspondingDocCollection
object for the given collection name if such a collection exists.ClusterState.CollectionRef
getCollectionRef(String coll)
Map<String,DocCollection>
getCollectionsMap()
Get a map of collection name vs DocCollection objects Implementation note: This method resolves the collection reference by callingClusterState.CollectionRef.get()
which can make a call to ZooKeeper.Map<String,ClusterState.CollectionRef>
getCollectionStates()
Be aware that this may return collections which may not exist now.Set<String>
getLiveNodes()
Get names of the currently live nodes.String
getShardId(String nodeName, String coreName)
String
getShardId(String collectionName, String nodeName, String coreName)
Integer
getZkClusterStateVersion()
Deprecated.true cluster state spans many ZK nodes, stop depending on the version number of the shared node! will be removed in 8.0int
getZNodeVersion()
Returns the zNode version that was used to construct this instance.boolean
hasCollection(String collectionName)
Returns true if the specified collection name exists, false otherwise.int
hashCode()
boolean
liveNodesContain(String name)
Check if node is alive.static ClusterState
load(Integer version, byte[] bytes, Set<String> liveNodes)
static ClusterState
load(Integer version, byte[] bytes, Set<String> liveNodes, String znode)
Create ClusterState from json string that is typically stored in zookeeper.static ClusterState
load(Integer version, Map<String,Object> stateMap, Set<String> liveNodes, String znode)
String
toString()
void
write(JSONWriter jsonWriter)
-
-
-
Method Detail
-
copyWith
public ClusterState copyWith(String collectionName, DocCollection collection)
Returns a new cluster state object modified with the given collection.- Parameters:
collectionName
- the name of the modified (or deleted) collectioncollection
- the collection object. A null value deletes the collection from the state- Returns:
- the updated cluster state which preserves the current live nodes and zk node version
-
getZNodeVersion
public int getZNodeVersion()
Returns the zNode version that was used to construct this instance.
-
hasCollection
public boolean hasCollection(String collectionName)
Returns true if the specified collection name exists, false otherwise. Implementation note: This method resolves the collection reference by callingClusterState.CollectionRef.get()
which can make a call to ZooKeeper. This is necessary because the semantics of how collection list is loaded have changed in SOLR-6629.
-
getCollection
public DocCollection getCollection(String collection)
Get the named DocCollection object, or throw an exception if it doesn't exist.
-
getCollectionRef
public ClusterState.CollectionRef getCollectionRef(String coll)
-
getCollectionOrNull
public DocCollection getCollectionOrNull(String collectionName)
Returns the correspondingDocCollection
object for the given collection name if such a collection exists. Returns null otherwise. Equivalent to getCollectionOrNull(collectionName, false)
-
getCollectionOrNull
public DocCollection getCollectionOrNull(String collectionName, boolean allowCached)
Returns the correspondingDocCollection
object for the given collection name if such a collection exists. Returns null otherwise.- Parameters:
collectionName
- Name of the collectionallowCached
- allow LazyCollectionRefs to use a time-based cached value Implementation note: This method resolves the collection reference by callingClusterState.CollectionRef.get()
which may make a call to ZooKeeper. This is necessary because the semantics of how collection list is loaded have changed in SOLR-6629.
-
getCollectionsMap
public Map<String,DocCollection> getCollectionsMap()
Get a map of collection name vs DocCollection objects Implementation note: This method resolves the collection reference by callingClusterState.CollectionRef.get()
which can make a call to ZooKeeper. This is necessary because the semantics of how collection list is loaded have changed in SOLR-6629.- Returns:
- a map of collection name vs DocCollection object
-
liveNodesContain
public boolean liveNodesContain(String name)
Check if node is alive.
-
load
public static ClusterState load(Integer version, byte[] bytes, Set<String> liveNodes)
-
load
public static ClusterState load(Integer version, byte[] bytes, Set<String> liveNodes, String znode)
Create ClusterState from json string that is typically stored in zookeeper.- Parameters:
version
- zk version of the clusterstate.json file (bytes)bytes
- clusterstate.json as a byte arrayliveNodes
- list of live nodes- Returns:
- the ClusterState
-
load
public static ClusterState load(Integer version, Map<String,Object> stateMap, Set<String> liveNodes, String znode)
-
write
public void write(JSONWriter jsonWriter)
- Specified by:
write
in interfaceJSONWriter.Writable
-
getZkClusterStateVersion
@Deprecated public Integer getZkClusterStateVersion()
Deprecated.true cluster state spans many ZK nodes, stop depending on the version number of the shared node! will be removed in 8.0The version of clusterstate.json in ZooKeeper.- Returns:
- null if ClusterState was created for publication, not consumption
-
getCollectionStates
public Map<String,ClusterState.CollectionRef> getCollectionStates()
Be aware that this may return collections which may not exist now. You can confirm that this collection exists after verifying CollectionRef.get() != null
-
forEachCollection
public void forEachCollection(Consumer<DocCollection> consumer)
Iterate over collections. UnlikegetCollectionStates()
collections passed to the consumer are guaranteed to exist.- Parameters:
consumer
- collection consumer.
-
-