只有发送过离线通知的节点才会发送恢复在线通知

This commit is contained in:
GoEdgeLab
2022-08-07 17:28:54 +08:00
parent 2aa93e826d
commit d00061d3c4
4 changed files with 66 additions and 20 deletions

View File

@@ -52,7 +52,7 @@ func NextCommandRequestId() int64 {
func init() {
// 清理WaitingChannelMap
ticker := time.NewTicker(30 * time.Second)
var ticker = time.NewTicker(30 * time.Second)
goman.New(func() {
for range ticker.C {
nodeLocker.Lock()
@@ -110,8 +110,6 @@ func (this *NodeService) NodeStream(server pb.NodeService_NodeStreamServer) erro
return err
}
//logs.Println("[RPC]accepted node '" + numberutils.FormatInt64(nodeId) + "' connection")
var tx = this.NullTx()
// 标记为活跃状态
@@ -121,25 +119,31 @@ func (this *NodeService) NodeStream(server pb.NodeService_NodeStreamServer) erro
}
if !oldIsActive {
err = models.SharedNodeDAO.UpdateNodeActive(tx, nodeId, true)
inactiveNotifiedAt, err := models.SharedNodeDAO.FindNodeInactiveNotifiedAt(tx, nodeId)
if err != nil {
return err
}
if inactiveNotifiedAt > 0 {
err = models.SharedNodeDAO.UpdateNodeActive(tx, nodeId, true)
if err != nil {
return err
}
// 发送恢复消息
clusterId, err := models.SharedNodeDAO.FindNodeClusterId(tx, nodeId)
if err != nil {
return err
}
nodeName, err := models.SharedNodeDAO.FindNodeName(tx, nodeId)
if err != nil {
return err
}
subject := "节点\"" + nodeName + "\"已经恢复在线"
msg := "节点\"" + nodeName + "\"已经恢复在线"
err = models.SharedMessageDAO.CreateNodeMessage(tx, nodeconfigs.NodeRoleNode, clusterId, nodeId, models.MessageTypeNodeActive, models.MessageLevelSuccess, subject, msg, nil, false)
if err != nil {
return err
// 发送恢复消息
clusterId, err := models.SharedNodeDAO.FindNodeClusterId(tx, nodeId)
if err != nil {
return err
}
nodeName, err := models.SharedNodeDAO.FindNodeName(tx, nodeId)
if err != nil {
return err
}
var subject = "节点\"" + nodeName + "\"已经恢复在线"
var msg = "节点\"" + nodeName + "\"已经恢复在线"
err = models.SharedMessageDAO.CreateNodeMessage(tx, nodeconfigs.NodeRoleNode, clusterId, nodeId, models.MessageTypeNodeActive, models.MessageLevelSuccess, subject, msg, nil, false)
if err != nil {
return err
}
}
}