func()

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
}