func (ss *cohortStorageServer) RegisterServer(args *storagerpc.RegisterArgs, reply *storagerpc.RegisterReply) error { // Node not yet seen by MasterServer ss.rw.Lock() if _, ok := ss.exists[args.ServerInfo.NodeId]; !ok { ss.exists[args.ServerInfo.NodeId] = true ss.servers = append(ss.servers, args.ServerInfo) } if len(ss.servers) < ss.numNodes { ss.rw.Unlock() reply.Status = storagerpc.NotReady return nil } /// sort the nodes by nodeID starting from lowest nodeSorter := func(n1, n2 *storagerpc.Node) bool { return n1.NodeId < n2.NodeId } By(nodeSorter).Sort(ss.servers) ss.rw.Unlock() reply.Status = storagerpc.OK reply.Servers = ss.servers return nil }