Class ClusterState

  • All Implemented Interfaces:
    org.noggit.JSONWriter.Writable

    public class ClusterState
    extends Object
    implements org.noggit.JSONWriter.Writable
    Immutable state of the cloud. Normally you can get the state by using ZkStateReader.getClusterState().
    WARNING: This API is experimental and might change in incompatible ways in the next release.
    • 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) collection
        collection - 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 calling ClusterState.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. Please see javadocs in ZkStateReader.refreshCollectionList(Watcher)
      • getCollection

        public DocCollection getCollection​(String collection)
        Get the named DocCollection object, or throw an exception if it doesn't exist.
      • getCollectionOrNull

        public DocCollection getCollectionOrNull​(String collectionName)
        Returns the corresponding DocCollection 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 corresponding DocCollection object for the given collection name if such a collection exists. Returns null otherwise.
        Parameters:
        collectionName - Name of the collection
        allowCached - allow LazyCollectionRefs to use a time-based cached value Implementation note: This method resolves the collection reference by calling ClusterState.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. Please see javadocs in ZkStateReader.refreshCollectionList(Watcher)
      • getCollectionsMap

        public Map<String,​DocCollection> getCollectionsMap()
        Get a map of collection name vs DocCollection objects Implementation note: This method resolves the collection reference by calling ClusterState.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. Please see javadocs in ZkStateReader.refreshCollectionList(Watcher)
        Returns:
        a map of collection name vs DocCollection object
      • getLiveNodes

        public Set<String> getLiveNodes()
        Get names of the currently live nodes.
      • liveNodesContain

        public boolean liveNodesContain​(String name)
        Check if node is alive.
      • 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 array
        liveNodes - list of live nodes
        Returns:
        the ClusterState
      • write

        public void write​(org.noggit.JSONWriter jsonWriter)
        Specified by:
        write in interface org.noggit.JSONWriter.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.0
        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
      • 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