From 10c65da3d2af7056f48d9301e83f53f102f76e18 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期一, 30 十月 2023 14:52:11 +0800
Subject: [PATCH] fix

---
 main.go |   38 ++++++++++++++++++++++++++++++--------
 1 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/main.go b/main.go
index 569c9e7..8aa04c1 100644
--- a/main.go
+++ b/main.go
@@ -11,6 +11,7 @@
 	"apsClient/serf"
 	"apsClient/service/plc_address"
 	"fmt"
+	"log"
 	"net/http"
 	"time"
 )
@@ -25,35 +26,46 @@
 		return
 	}
 
-	if err := crontask.InitTask(); err != nil {
-		logx.Errorf("crontab task Init err:%v", err)
-		return
-	}
-
 	//鍔犺浇plc鍐欏叆鍦板潃
 	plc_address.LoadAddressFromFile()
 
 	// 鍚姩鏁版嵁鍚屾
 	var serfStartChan = make(chan bool)
+
 	// 闇�瑕佸悓姝ョ殑琛�
 	var syncTables = []string{
 		"procedures",
 		"process_model",
 		"production_progress",
 		"work_order",
+		"task_status_sync",
+		"device",
+		"device_plc",
 	}
 
 	agent := serf.InitAgent("apsClient", syncTables, sqlitex.GetDB())
 	agent.RegisterClusterEvent(serfClusterEvent)
+
 	go agent.Serve(serfStartChan)
-	<-serfStartChan
+	if !<-serfStartChan {
+		logx.Errorf("serf Init err, exit")
+		return
+	}
 
 	// 鍒ゆ柇褰撳墠闆嗙兢鐘舵��
+	logx.Infof("current agent.ClusterStatus:%v", agent.ClusterStatus)
+	log.Println("current agent.ClusterStatus:", agent.ClusterStatus)
 	if agent.ClusterStatus != "slave" {
 		if err := nsq.Init(); err != nil {
 			logx.Errorf("nsq Init err:%v", err)
 			return
 		}
+
+	}
+	crontask.Once(agent.ClusterStatus != "slave")
+	if err := crontask.StartTask(agent.ClusterStatus != "slave"); err != nil {
+		logx.Errorf("crontab task Init err:%v", err)
+		return
 	}
 
 	logx.Infof("apsClient start serve...")
@@ -69,12 +81,22 @@
 func serfClusterEvent(stat int) {
 	switch stat {
 	case serf.EventCreateCluster, serf.EventSlave2Master, serf.EventLeaveCluster:
-		if err := nsq.Init(); err != nil {
+		if err := nsq.Init(); err != nil { //寮�鍚痭sq
 			logx.Errorf("nsq Init err:%v", err)
 			return
 		}
+		crontask.Once(true)
+		if err := crontask.RestartTask(true); err != nil { //浠aster鏂瑰紡閲嶅惎task
+			logx.Errorf("crontab task Init err:%v", err)
+			return
+		}
 	case serf.EventJoinCluster, serf.EventMaster2Slave:
-		nsq.Stop()
+		nsq.Stop() //鍏抽棴nsq
+		crontask.Once(false)
+		if err := crontask.RestartTask(false); err != nil { //浠ラ潪master鏂瑰紡閲嶅惎task
+			logx.Errorf("crontab task Init err:%v", err)
+			return
+		}
 	}
 
 	logx.Infof("serf cluster event: %v", stat)

--
Gitblit v1.8.0