func (c *InfluxChangeConnectionStringCommand) Apply(server raft.Server) (interface{}, error) { if c.Name == server.Name() { return nil, nil } server.RemovePeer(c.Name) server.AddPeer(c.Name, c.ConnectionString) clusterConfig := server.Context().(*cluster.ClusterConfiguration) newServer := clusterConfig.GetServerByRaftName(c.Name) // it's a new server the cluster has never seen, make it a potential if newServer == nil { return nil, fmt.Errorf("Server %s doesn't exist", c.Name) } newServer.RaftConnectionString = c.ConnectionString newServer.ProtobufConnectionString = c.ProtobufConnectionString server.Context().(*cluster.ClusterConfiguration).ChangeProtobufConnectionString(newServer) server.FlushCommitIndex() return nil, nil }
func (c *InfluxJoinCommand) Apply(server raft.Server) (interface{}, error) { err := server.AddPeer(c.Name, c.ConnectionString) if err != nil { return nil, err } clusterConfig := server.Context().(*cluster.ClusterConfiguration) newServer := clusterConfig.GetServerByRaftName(c.Name) // it's a new server the cluster has never seen, make it a potential if newServer != nil { return nil, fmt.Errorf("Server %s already exist", c.Name) } log.Info("Adding new server to the cluster config %s", c.Name) clusterServer := cluster.NewClusterServer(c.Name, c.ConnectionString, c.ProtobufConnectionString, nil, clusterConfig.GetLocalConfiguration()) clusterConfig.AddPotentialServer(clusterServer) return nil, nil }
func (c *InfluxJoinCommand) Apply(server raft.Server) (interface{}, error) { err := server.AddPeer(c.Name, c.ConnectionString) return []byte("join"), err }