code: func (c *cluster) partitionNodes(partitionID int) []*Node {
  	// Default replica count to between one and the number of nodes.
  	// The replica count can be zero if there are no nodes.
  	replicaN := c.ReplicaN
  	if replicaN > len(c.nodes) {
  		replicaN = len(c.nodes)
  	} else if replicaN == 0 {
  		replicaN = 1
  	}
  
  	// Determine primary owner node.
  	nodeIndex := c.Hasher.Hash(uint64(partitionID), len(c.nodes))
  
  	// Collect nodes around the ring.
  	nodes := make([]*Node, replicaN)
  	for i := 0; i < replicaN; i++ {
  		nodes[i] = c.nodes[(nodeIndex+i)%len(c.nodes)]
  	}
  
  	return nodes
  }
docs: // partitionNodes returns a list of nodes that own a partition. unprotected.