diff --git a/internal/nodes/node.go b/internal/nodes/node.go index 5518d4a..30c0c05 100644 --- a/internal/nodes/node.go +++ b/internal/nodes/node.go @@ -297,7 +297,12 @@ func (this *Node) loop() error { for _, task := range tasksResp.NodeTasks { switch task.Type { case "ipItemChanged": - iplibrary.IPListUpdateNotify <- true + // 防止阻塞 + select { + case iplibrary.IPListUpdateNotify <- true: + default: + + } // 修改为已同步 _, err = rpcClient.NodeTaskRPC().ReportNodeTaskDone(nodeCtx, &pb.ReportNodeTaskDoneRequest{ @@ -334,11 +339,12 @@ func (this *Node) loop() error { if err != nil { return err } - case "nodeVersionChanged": - goman.New(func() { - sharedUpgradeManager.Start() - }) + if !sharedUpgradeManager.IsInstalling() { + goman.New(func() { + sharedUpgradeManager.Start() + }) + } case "scriptsChanged": err = this.reloadCommonScripts() if err != nil { diff --git a/internal/nodes/upgrade_manager.go b/internal/nodes/upgrade_manager.go index f13443f..24e52e1 100644 --- a/internal/nodes/upgrade_manager.go +++ b/internal/nodes/upgrade_manager.go @@ -69,6 +69,11 @@ func (this *UpgradeManager) Start() { }) } +// IsInstalling 检查是否正在安装 +func (this *UpgradeManager) IsInstalling() bool { + return this.isInstalling +} + func (this *UpgradeManager) install() error { // 检查是否有已下载但未安装成功的 if len(this.lastFile) > 0 {