in store/cluster_shard.go [96:112]
func (shard *Shard) addNode(addr, role, password string) error {
if role != RoleMaster && role != RoleSlave {
return fmt.Errorf("%w: role", consts.ErrInvalidArgument)
}
for _, node := range shard.Nodes {
if node.Addr() == addr {
return consts.ErrAlreadyExists
}
}
if role == RoleMaster && len(shard.Nodes) > 0 {
return fmt.Errorf("master node %w", consts.ErrAlreadyExists)
}
node := NewClusterNode(addr, password)
node.SetRole(role)
shard.Nodes = append(shard.Nodes, node)
return nil
}