From ea0c413acc0806c9eb938bc12c587ab354f5c90b Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Mon, 18 Apr 2022 15:39:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=8D=E5=8A=A1=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=8F=98=E5=8C=96=E5=8F=AF=E8=83=BD=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E7=9A=84=E6=AD=BB=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/nodes/node.go | 78 +++++++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/internal/nodes/node.go b/internal/nodes/node.go index 4750f88..d88bc06 100644 --- a/internal/nodes/node.go +++ b/internal/nodes/node.go @@ -537,42 +537,7 @@ func (this *Node) startSyncTimer() { continue } case <-serverChangeTicker.C: // 服务变化 - this.locker.Lock() - if len(this.updatingServerMap) > 0 { - var updatingServerMap = this.updatingServerMap - this.updatingServerMap = map[int64]*serverconfigs.ServerConfig{} - newNodeConfig, err := nodeconfigs.CloneNodeConfig(sharedNodeConfig) - if err != nil { - remotelogs.Error("NODE", "apply server config error: "+err.Error()) - continue - } - for serverId, serverConfig := range updatingServerMap { - if serverConfig != nil { - newNodeConfig.AddServer(serverConfig) - } else { - newNodeConfig.RemoveServer(serverId) - } - } - - err, serverErrors := newNodeConfig.Init() - if err != nil { - remotelogs.Error("NODE", "apply server config error: "+err.Error()) - continue - } - if len(serverErrors) > 0 { - for _, serverErr := range serverErrors { - remotelogs.ServerError(serverErr.Id, "NODE", serverErr.Message, nodeconfigs.NodeLogTypeServerConfigInitFailed, maps.Map{}) - } - } - - this.onReload(newNodeConfig) - - err = sharedListenerManager.Start(newNodeConfig) - if err != nil { - remotelogs.Error("NODE", "apply server config error: "+err.Error()) - } - } - this.locker.Unlock() + this.reloadServer() case <-nodeTaskNotify: // 有新的更新任务 err := this.loop() if err != nil { @@ -915,6 +880,47 @@ func (this *Node) onReload(config *nodeconfigs.NodeConfig) { } } +// reload server config +func (this *Node) reloadServer() { + this.locker.Lock() + defer this.locker.Unlock() + + if len(this.updatingServerMap) > 0 { + var updatingServerMap = this.updatingServerMap + this.updatingServerMap = map[int64]*serverconfigs.ServerConfig{} + newNodeConfig, err := nodeconfigs.CloneNodeConfig(sharedNodeConfig) + if err != nil { + remotelogs.Error("NODE", "apply server config error: "+err.Error()) + return + } + for serverId, serverConfig := range updatingServerMap { + if serverConfig != nil { + newNodeConfig.AddServer(serverConfig) + } else { + newNodeConfig.RemoveServer(serverId) + } + } + + err, serverErrors := newNodeConfig.Init() + if err != nil { + remotelogs.Error("NODE", "apply server config error: "+err.Error()) + return + } + if len(serverErrors) > 0 { + for _, serverErr := range serverErrors { + remotelogs.ServerError(serverErr.Id, "NODE", serverErr.Message, nodeconfigs.NodeLogTypeServerConfigInitFailed, maps.Map{}) + } + } + + this.onReload(newNodeConfig) + + err = sharedListenerManager.Start(newNodeConfig) + if err != nil { + remotelogs.Error("NODE", "apply server config error: "+err.Error()) + } + } +} + func (this *Node) checkDisk() { if runtime.GOOS == "linux" { for _, path := range []string{