in api/datanode/datanode.go [55:87]
func (dnClient *DatanodeClient) connectToNext() error {
if dnClient.grpcConnection != nil {
dnClient.grpcConnection.Close()
}
dnClient.memberIndex = dnClient.memberIndex + 1
if dnClient.memberIndex == len(dnClient.datanodes) {
dnClient.memberIndex = 0
}
selectedDatanode := dnClient.datanodes[dnClient.memberIndex]
dnClient.currentDatanode = *selectedDatanode
standalonePort := 0
for _, port := range dnClient.currentDatanode.Ports {
if *port.Name == "STANDALONE" {
standalonePort = int(*port.Value)
}
}
address := *dnClient.currentDatanode.IpAddress + ":" + strconv.Itoa(standalonePort)
println("Connecting to the " + address)
conn, err := grpc.Dial(address, grpc.WithInsecure(), grpc.WithBlock())
if err != nil {
return err
}
dnClient.ratisReceiver = make(chan ratis.RaftClientReplyProto)
dnClient.standaloneReceiver = make(chan dnapi.ContainerCommandResponseProto)
client, err := dnapi.NewXceiverClientProtocolServiceClient(conn).Send(dnClient.ctx)
dnClient.standaloneClient = &client
go dnClient.StandaloneReceive()
return nil
}