From 71b8885babe6dfd25c91b007018347c0c1bfac74 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期五, 20 十月 2023 17:35:52 +0800
Subject: [PATCH] 添加主节点变更和主动切换功能

---
 system-service/service/clusterService.go |   26 ++++++++++++++++++++++++++
 1 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/system-service/service/clusterService.go b/system-service/service/clusterService.go
index 288683f..a39741f 100644
--- a/system-service/service/clusterService.go
+++ b/system-service/service/clusterService.go
@@ -138,6 +138,31 @@
 	return false, ""
 }
 
+// 鏍规嵁闆嗙兢鍚嶇О鍜屽瘑鐮佸垱寤洪泦缇�
+func (s ClusterService) UpdateDriftStateByNodeId(clusterId, nodeId, role string) (bool, string) {
+	var node models.Node
+	isSuccess := node.UpdateDriftStateByNodeId(role, nodeId, false)
+
+	if isSuccess {
+		// 閫氱煡涓昏妭鐐瑰彉鏇�
+		chMsg := protomsg.DbChangeMessage{
+			Id:     clusterId,
+			Table:  protomsg.TableChanged_T_Cluster,
+			Action: protomsg.DbAction_Insert,
+			Info:   "slave2master",
+		}
+
+		s.AddDbMessage(&chMsg)
+
+		err := serf.Agent.UserEvent(serf.UserEventChangeMaster, []byte(nodeId), false)
+		if err != nil {
+			logger.Error("UserEventSyncVirtualIp err:", err)
+		}
+	}
+
+	return isSuccess, ""
+}
+
 func (s ClusterService) SearchByPwd(pwd string) (err error) {
 	_, isSearching := getFromSearchMap()
 	if isSearching {
@@ -471,6 +496,7 @@
 func ClusterSyncProcMessage(payload []byte) {
 	if serf.Agent == nil {
 		logger.Error("鏈姞鍏ラ泦缇�")
+		return
 	}
 
 	err := serf.Agent.UserEvent(serf.UserEventSyncMessage, payload, false)

--
Gitblit v1.8.0