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