liuxiaolong
2020-05-13 e99db8571c51d5203e847b374bd8bd6210803485
add dbDump handler and getDbFromCluster
1个文件已修改
42 ■■■■■ 已修改文件
agent.go 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
agent.go
@@ -130,6 +130,26 @@
    receiveSqlInterface = c
}
type DbHandler interface {
    Execute(sql string) bool
}
type DbDumpHandler interface {
    Dump(tables string) string
}
//数据库execute句柄
var DbHandle DbHandler
//数据库备份句柄,只在syncdb中用到
var dbDumpH DbDumpHandler
func RegisterDbHandler(h DbHandler) {
    DbHandle = h
}
func RegisterDbDumpHandler(h DbDumpHandler) {
    dbDumpH = h
}
// HandleEvent Handles serf.EventMemberJoin events,
// which will wait for members to join until the number of group members is equal to "groupExpect"
@@ -191,23 +211,11 @@
        } else if ev.Name == QueryEventUpdateDBData {
            //fmt.Println(string(ev.Payload))
            var tableNames []string
            err := json.Unmarshal(ev.Payload, &tableNames)
            if err !=nil {
                //fmt.Println("Query tableNames unmarshal err")
                return
            }
            json.Unmarshal(ev.Payload, &tableNames)
            rows, err := ExecuteQuerySql(tableNames)
            if err != nil {
                //fmt.Println("err: ", err)
                return
            }
            var rowsReturn []Rows
            for _, r := range rows {
                rowsReturn = append(rowsReturn, *r)
            }
            dumpData := dbDumpH.Dump(strings.Join(tableNames, ","))
            bytesReturn, err := json.Marshal(rowsReturn)
            bytesReturn, _ := json.Marshal(dumpData)
            //fmt.Println("results: ", bytesReturn)
            if query, ok := event.(*serf.Query); ok {
                if err := query.Respond(bytesReturn); err != nil {
@@ -446,8 +454,8 @@
    for _, m := range mbs {
        //fmt.Println("m", m)
        if m.Name != a.conf.NodeName { //前缀:DSVAD:分析服务器 DSPAD:进出入pad
            if strings.HasPrefix(a.conf.NodeName, "DSVAD"){
                if strings.HasPrefix(m.Name, "DSVAD") {
            if strings.HasPrefix(a.conf.NodeName, "PSPAD"){
                if strings.HasPrefix(m.Name, "PSPAD") {
                    specmembername = m.Name
                    break
                }