Class DocCollection

  • All Implemented Interfaces:
    Iterable<Slice>, org.noggit.JSONWriter.Writable

    public class DocCollection
    extends ZkNodeProps
    implements Iterable<Slice>
    Models a Collection in zookeeper (but that Java name is obviously taken, hence "DocCollection")
    • Constructor Detail

      • DocCollection

        public DocCollection​(String name,
                             Map<String,​Slice> slices,
                             Map<String,​Object> props,
                             DocRouter router,
                             int zkVersion,
                             String znode)
        name - The name of the collection
        slices - The logical shards of the collection. This is used directly and a copy is not made.
        props - The properties of the slice. This is used directly and a copy is not made.
    • Method Detail

      • copyWithSlices

        public DocCollection copyWithSlices​(Map<String,​Slice> slices)
        Use this to make an exact copy of DocCollection with a new set of Slices and every other property as is
        slices - the new set of Slices
        the resulting DocCollection
      • getName

        public String getName()
        Return collection name.
      • getSlice

        public Slice getSlice​(String sliceName)
      • forEachReplica

        public void forEachReplica​(BiConsumer<String,​Replica> consumer)
        consumer - consume shardName vs. replica
      • getSlices

        public Collection<Slice> getSlices()
        Gets the list of all slices for this collection.
      • getActiveSlices

        public Collection<Slice> getActiveSlices()
        Return the list of active slices for this collection.
      • getActiveSlicesArr

        public Slice[] getActiveSlicesArr()
        Return array of active slices for this collection (performance optimization).
      • getSlicesMap

        public Map<String,​Slice> getSlicesMap()
        Get the map of all slices (sliceName->Slice) for this collection.
      • getActiveSlicesMap

        public Map<String,​Slice> getActiveSlicesMap()
        Get the map of active slices (sliceName->Slice) for this collection.
      • getReplicas

        public List<Replica> getReplicas​(String nodeName)
        Get the list of replicas hosted on the given node or null if none.
      • getLeaderReplicas

        public List<Replica> getLeaderReplicas​(String nodeName)
        Get the list of all leaders hosted on the given node or null if none.
      • getZNodeVersion

        public int getZNodeVersion()
      • getStateFormat

        public int getStateFormat()
      • getReplicationFactor

        public Integer getReplicationFactor()
        replication factor for this collection or null if no replication factor exists.
      • getAutoAddReplicas

        public boolean getAutoAddReplicas()
      • getMaxShardsPerNode

        public int getMaxShardsPerNode()
      • getZNode

        public String getZNode()
      • isReadOnly

        public boolean isReadOnly()
      • write

        public void write​(org.noggit.JSONWriter jsonWriter)
        Specified by:
        write in interface org.noggit.JSONWriter.Writable
        write in class ZkNodeProps
      • getReplica

        public Replica getReplica​(String coreNodeName)
      • isFullyActive

        public static boolean isFullyActive​(Set<String> liveNodes,
                                            DocCollection collectionState,
                                            int expectedShards,
                                            int expectedReplicas)
        Check that all replicas in a collection are live
        See Also:
      • getReplica

        public Replica getReplica​(BiPredicate<String,​Replica> predicate)
        predicate - test against shardName vs. replica
        the first replica that matches the predicate
      • getShardId

        public String getShardId​(String nodeName,
                                 String coreName)
        Get the shardId of a core on a specific node
      • getNumNrtReplicas

        public Integer getNumNrtReplicas()
        the number of replicas of type Replica.Type.NRT this collection was created with
      • getNumTlogReplicas

        public Integer getNumTlogReplicas()
        the number of replicas of type Replica.Type.TLOG this collection was created with
      • getNumPullReplicas

        public Integer getNumPullReplicas()
        the number of replicas of type Replica.Type.PULL this collection was created with
      • getPolicyName

        public String getPolicyName()
        the policy associated with this collection if any
      • getExpectedReplicaCount

        public int getExpectedReplicaCount​(Replica.Type type,
                                           int def)