liuxiaolong
2020-05-14 c23884a02a88619ce34dcffb422800a377479db8
get members add 20 sec time out
1个文件已修改
55 ■■■■ 已修改文件
agent.go 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
agent.go
@@ -22,6 +22,7 @@
    "errors"
    "fmt"
    "github.com/hashicorp/memberlist"
    "github.com/micro/go-micro/logger"
    "io/ioutil"
    "net"
    "os"
@@ -447,27 +448,16 @@
//dbPathWrite the path where to write after got a database,
func (a *Agent) GetTableDataFromCluster(tableNames []string) (*string, error) {
    //members: get name of first member
    mbs := a.GroupMembers(a.conf.ClusterID)
    specmembername := ""
    for _, m := range mbs {
        //fmt.Println("m", m)
        if m.Name != a.conf.NodeName { //前缀:DSVAD:分析服务器 DSPAD:进出入pad
            if strings.HasPrefix(a.conf.NodeName, "PAD"){
                if strings.HasPrefix(m.Name, "PAD") {
                    specmembername = m.Name
                    break
                }
            }
        }
    }
    if specmembername == "" {
    targetName := a.GetOneAliveNodeId(20 * time.Second)
    if targetName == "" {
        return nil, errors.New("alive node not found in cluster")
    }
    //fmt.Println("mbs:", mbs, "a.conf.BindAddr:", a.conf.BindAddr, "specmembername:", specmembername)
    //fmt.Println("mbs:", mbs, "a.conf.BindAddr:", a.conf.BindAddr, "targetName:", targetName)
    //query: get db file.
    params := serf.QueryParam{
        FilterNodes: strings.Fields(specmembername),
        FilterNodes: strings.Fields(targetName),
    }
    //SQL
@@ -503,6 +493,39 @@
    return &dumpSqls, nil
}
func (a *Agent) GetOneAliveNodeId(timeOut time.Duration) string {
    nodeId := ""
    sTk := time.NewTicker(1 * time.Second)
    outTk := time.NewTicker(timeOut)
    defer sTk.Stop()
    defer outTk.Stop()
    for {
        select {
        case <- sTk.C:
            mbs := a.GroupMembers(a.conf.ClusterID)
            for _, m := range mbs {
                //fmt.Println("m", m)
                if m.Name != a.conf.NodeName { //前缀:DSVAD:分析服务器 DSPAD:进出入pad
                    if strings.HasPrefix(a.conf.NodeName, "PAD"){
                        if strings.HasPrefix(m.Name, "PAD") {
                            nodeId = m.Name
                            goto Out
                        }
                    }
                }
            }
        case <-outTk.C:
            fmt.Println("cannot get alive node from cluster,time out")
            goto Out
        default:
        }
    }
Out:
    return nodeId
}
type SqlUserEvent struct {
    Owner string   `json:"owner"`
    Sql   []string `json:"sql"`