Package org.apache.solr.common.cloud

## Class DocCollection

- java.lang.Object
- - org.apache.solr.common.cloud.ZkNodeProps
  - - org.apache.solr.common.cloud.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")

### Field Summary

Fields
`static String` `DOC_ROUTER`
`static String` `PER_REPLICA_STATE`
`static String` `SHARDS`

### Fields inherited from class org.apache.solr.common.cloud.ZkNodeProps

`propMap`

### Constructor Summary

Constructors
`DocCollection​(String name, Map<String,​Slice> slices, Map<String,​Object> props, DocRouter router)`
`DocCollection​(String name, Map<String,​Slice> slices, Map<String,​Object> props, DocRouter router, int zkVersion)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`DocCollection` `copyWith​(PerReplicaStates newPerReplicaStates)` Update our state with a state of a `Replica` Used to create a new Collection State when only a replica is updated
`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
`boolean` `equals​(Object that)`
`void` `forEachReplica​(BiConsumer<String,​Replica> consumer)`
`Collection<Slice>` `getActiveSlices()` Return the list of active slices for this collection.
`Slice[]` `getActiveSlicesArr()` Return array of active slices for this collection (performance optimization).
`Map<String,​Slice>` `getActiveSlicesMap()` Get the map of active slices (sliceName->Slice) for this collection.
`int` `getChildNodesVersion()`
`String` `getConfigName()` Return non-null config name
`int` `getExpectedReplicaCount​(Replica.Type type, int def)`
`Replica` `getLeader​(String sliceName)`
`List<Replica>` `getLeaderReplicas​(String nodeName)` Get the list of all leaders hosted on the given node or `null` if none.
`String` `getName()` Return collection name.
`Integer` `getNumNrtReplicas()`
`Integer` `getNumPullReplicas()`
`Integer` `getNumTlogReplicas()`
`PerReplicaStates` `getPerReplicaStates()`
`Replica` `getReplica​(String coreNodeName)`
`Replica` `getReplica​(BiPredicate<String,​Replica> predicate)`
`List<Replica>` `getReplicas()`
`List<Replica>` `getReplicas​(String nodeName)` Get the list of replicas hosted on the given node or `null` if none.
`List<Replica>` `getReplicas​(EnumSet<Replica.Type> s)`
`Integer` `getReplicationFactor()`
`DocRouter` `getRouter()`
`String` `getShardId​(String nodeName, String coreName)` Get the shardId of a core on a specific node
`Slice` `getSlice​(String sliceName)`
`Collection<Slice>` `getSlices()` Gets the list of all slices for this collection.
`Map<String,​Slice>` `getSlicesMap()` Get the map of all slices (sliceName->Slice) for this collection.
`String` `getZNode()`
`int` `getZNodeVersion()`
`int` `hashCode()`
`static boolean` `isFullyActive​(Set<String> liveNodes, DocCollection collectionState, int expectedShards, int expectedReplicas)` Check that all replicas in a collection are live
`boolean` `isModified​(int dataVersion, int childVersion)`
`boolean` `isPerReplicaState()`
`boolean` `isReadOnly()`
`Iterator<Slice>` `iterator()`
`String` `toString()`
`static Object` `verifyProp​(Map<String,​Object> props, String propName)`
`static Object` `verifyProp​(Map<String,​Object> props, String propName, Object def)`
`void` `write​(org.noggit.JSONWriter jsonWriter)`

### Methods inherited from class org.apache.solr.common.cloud.ZkNodeProps

`containsKey, fromKeyVals, get, getBool, getInt, getProperties, getStr, getStr, keySet, load, plus, plus, shallowCopy`

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

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface java.lang.Iterable

`forEach, spliterator`

### Field Detail

#### DOC_ROUTER

    public static final String DOC_ROUTER

See Also:
  Constant Field Values

#### SHARDS

    public static final String SHARDS

See Also:
  Constant Field Values

#### PER_REPLICA_STATE

    public static final String PER_REPLICA_STATE

See Also:
  Constant Field Values

### Constructor Detail

#### DocCollection

    public DocCollection​(String name,
                         Map<String,​Slice> slices,
                         Map<String,​Object> props,
                         DocRouter router)

#### DocCollection

    public DocCollection​(String name,
                         Map<String,​Slice> slices,
                         Map<String,​Object> props,
                         DocRouter router,
                         int zkVersion)

Parameters:
  `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.
  `zkVersion` - The version of the Collection node in Zookeeper (used for conditional updates).

### Method Detail

#### copyWith

    public DocCollection copyWith​(PerReplicaStates newPerReplicaStates)

Update our state with a state of a `Replica` Used to create a new Collection State when only a replica is updated

#### verifyProp

    public static Object verifyProp​(Map<String,​Object> props,
                                    String propName)

#### verifyProp

    public static Object verifyProp​(Map<String,​Object> props,
                                    String propName,
                                    Object def)

#### 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

Parameters:
  `slices` - the new set of Slices
Returns:
  the resulting DocCollection

#### getName

    public String getName()

Return collection name.

#### getConfigName

    public String getConfigName()

Return non-null config name

#### getSlice

    public Slice getSlice​(String sliceName)

#### forEachReplica

    public void forEachReplica​(BiConsumer<String,​Replica> consumer)

Parameters:
  `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()

#### getChildNodesVersion

    public int getChildNodesVersion()

#### isModified

    public boolean isModified​(int dataVersion,
                              int childVersion)

#### getReplicationFactor

    public Integer getReplicationFactor()

Returns:
  replication factor for this collection or null if no replication factor exists.

#### getZNode

    public String getZNode()

#### getRouter

    public DocRouter getRouter()

#### isReadOnly

    public boolean isReadOnly()

#### toString

    public String toString()

Overrides:
  `toString` in class `ZkNodeProps`

#### write

    public void write​(org.noggit.JSONWriter jsonWriter)

Specified by:
  `write` in interface `org.noggit.JSONWriter.Writable`
Overrides:
  `write` in class `ZkNodeProps`

#### getReplica

    public Replica getReplica​(String coreNodeName)

#### getLeader

    public Replica getLeader​(String sliceName)

#### 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:
  `CollectionStatePredicate`

#### iterator

    public Iterator<Slice> iterator()

Specified by:
  `iterator` in interface `Iterable<Slice>`

#### getReplicas

    public List<Replica> getReplicas()

#### getReplica

    public Replica getReplica​(BiPredicate<String,​Replica> predicate)

Parameters:
  `predicate` - test against shardName vs. replica
Returns:
  the first replica that matches the predicate

#### getReplicas

    public List<Replica> getReplicas​(EnumSet<Replica.Type> s)

#### getShardId

    public String getShardId​(String nodeName,
                             String coreName)

Get the shardId of a core on a specific node

#### equals

    public boolean equals​(Object that)

Overrides:
  `equals` in class `ZkNodeProps`

#### hashCode

    public int hashCode()

Overrides:
  `hashCode` in class `ZkNodeProps`

#### getNumNrtReplicas

    public Integer getNumNrtReplicas()

Returns:
  the number of replicas of type `Replica.Type.NRT` this collection was created with

#### getNumTlogReplicas

    public Integer getNumTlogReplicas()

Returns:
  the number of replicas of type `Replica.Type.TLOG` this collection was created with

#### getNumPullReplicas

    public Integer getNumPullReplicas()

Returns:
  the number of replicas of type `Replica.Type.PULL` this collection was created with

#### isPerReplicaState

    public boolean isPerReplicaState()

#### getPerReplicaStates

    public PerReplicaStates getPerReplicaStates()

#### getExpectedReplicaCount

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