// newReplicaSlice creates a ReplicaSlice from the replicas listed in the range // descriptor and using gossip to lookup node descriptors. Replicas on nodes // that are not gossiped are omitted from the result. func newReplicaSlice(gossip *gossip.Gossip, desc *roachpb.RangeDescriptor) ReplicaSlice { if gossip == nil { return nil } replicas := make(ReplicaSlice, 0, len(desc.Replicas)) for _, r := range desc.Replicas { nd, err := gossip.GetNodeDescriptor(r.NodeID) if err != nil { if log.V(1) { log.Infof(context.TODO(), "node %d is not gossiped: %v", r.NodeID, err) } continue } replicas = append(replicas, ReplicaInfo{ ReplicaDescriptor: r, NodeDesc: nd, }) } return replicas }