From 14f478ef3cc343e72f76e07b75ea6927b8f305f6 Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期三, 13 五月 2020 18:10:48 +0800 Subject: [PATCH] sync share data from cluster --- sync.go | 74 ++++++++++++++++++++---------------- 1 files changed, 41 insertions(+), 33 deletions(-) diff --git a/sync.go b/sync.go index 3f25454..0370b53 100755 --- a/sync.go +++ b/sync.go @@ -5,9 +5,7 @@ sdb "basic.com/Android/syncdb.git" "basic.com/valib/logger.git" "encoding/json" - "strconv" "strings" - "time" ) type ReceiveSqlInterface2 interface { sdb.ReceiveSqlInterface @@ -65,6 +63,14 @@ return true } +func RegisterDbHandler(h sdb.DbHandler) { + sdb.RegisterDbHandler(h) +} + +func RegisterDbDumpHandler(h sdb.DbDumpHandler) { + sdb.RegisterDbDumpHandler(h) +} + func JoinByNodeAddrs(strAddrs string) bool { if strAddrs == "" { logger.Error("strAddrs == \"\"") @@ -87,13 +93,21 @@ if isOk { logger.Debug("dbSync.Init success") - if ! syncTableDataFromCluster(clusterID, devID, devIP, devName) { + if !syncTableDataFromCluster(clusterID, devID, devIP, devName) { logger.Error("鍔犲叆闆嗙兢澶辫触锛侊紒锛�") + if agent != nil { + agent.Leave() + err := agent.Shutdown() + if err != nil { + logger.Error("syncTableDataFromCluster err,shutdown err:", err) + } + } return false } } else { logger.Error("dbSync.Init error") if agent != nil { + agent.Leave() err := agent.Shutdown() if err != nil { logger.Error("dbSync.Init err,shutdown err:", err) @@ -116,21 +130,13 @@ } func syncTableDataFromCluster(clusterID, devID, devIP, devName string) bool { - var err error - - foreignSql := string("PRAGMA foreign_keys=OFF") - _, err = sdb.ExecuteWriteSql([]string{foreignSql}, false) - if err != nil { - return false - } - - var sqls []string + var sqls = []string{"PRAGMA foreign_keys=OFF"} var delSql string for _, t := range syncTables { - if t == dBNameTables { - delSql = "delete from " + t + " where (analyServerId='' or analyServerId=NULL)" - } else if t == dBNameTablePersons { + if t == dBNameTablePersons { delSql = "delete from " + t + " where tableId in (select id from dbtables where (analyServerId='' or analyServerId=NULL))" + } else if t == dBNameTables { + delSql = "delete from " + t + " where (analyServerId='' or analyServerId=NULL)" } else { delSql = "delete from " + t } @@ -145,29 +151,31 @@ } } - logger.Debug("鎴愬姛娣诲姞褰撳墠鑺傜偣鍒伴泦缇よ妭鐐逛腑") + logger.Debug("鎴愬姛鑾峰彇闆嗙兢涓暟鎹�") - timeUnix := time.Now().Unix() - fmtTimeStr := time.Unix(timeUnix, 0).Format("2006-01-02 15:04:05") - - sqlSync := "insert into cluster_node(id,cluster_id,node_name,node_id,node_ip,create_time) values ('" + - devID + "','" + clusterID + "','" + devName + "','" + devID + "','" + - (devIP + ":" + strconv.Itoa(sdb.DefaultBindPort)) + "','" + fmtTimeStr + "')" - sqls = append(sqls, sqlSync) - - _, err = sdb.ExecuteWriteSql(sqls, true) - if err != nil { - logger.Debug("sdb.ExecuteWriteSql ERROR:", err) + //timeUnix := time.Now().Unix() + //fmtTimeStr := time.Unix(timeUnix, 0).Format("2006-01-02 15:04:05") + // + //sqlSync := "insert into cluster_node(id,cluster_id,node_name,node_id,node_ip,create_time) values ('" + + // devID + "','" + clusterID + "','" + devName + "','" + devID + "','" + + // (devIP + ":" + strconv.Itoa(sdb.DefaultBindPort)) + "','" + fmtTimeStr + "')" + //sqls = append(sqls, sqlSync) + sqls = append(sqls, "PRAGMA foreign_keys=ON") + sqlDump := strings.Join(sqls, ";") + if !sdb.DbHandle.Execute(sqlDump) { + logger.Debug("sdb.DbHandle.Execute ret: false") return false + } else { + logger.Debug("sdb.DbHandle.Execute ret: true") } - agent.SyncSql([]string{sqlSync}) + //agent.SyncSql([]string{sqlSync}) - foreignSql = string("PRAGMA foreign_keys=ON") - _, err = sdb.ExecuteWriteSql([]string{foreignSql}, false) - if err != nil { - return false - } + //foreignSql = string("PRAGMA foreign_keys=ON") + //_, err = sdb.ExecuteWriteSql([]string{foreignSql}, false) + //if err != nil { + // return false + //} return true } -- Gitblit v1.8.0