From b1114569135bbcbab8a095ebe37f4800183d2c5f Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 09 四月 2024 10:17:57 +0800
Subject: [PATCH] fix
---
main.go | 75 ++++++++++++++++++++++++++++++++-----
1 files changed, 64 insertions(+), 11 deletions(-)
diff --git a/main.go b/main.go
index 569c9e7..c79c874 100644
--- a/main.go
+++ b/main.go
@@ -2,6 +2,7 @@
import (
"apsClient/conf"
+ "apsClient/constvar"
"apsClient/crontask"
"apsClient/model"
"apsClient/nsq"
@@ -9,9 +10,11 @@
"apsClient/pkg/sqlitex"
"apsClient/router"
"apsClient/serf"
- "apsClient/service/plc_address"
+ "apsClient/service"
"fmt"
+ "log"
"net/http"
+ _ "net/http/pprof"
"time"
)
@@ -25,35 +28,63 @@
return
}
- if err := crontask.InitTask(); err != nil {
- logx.Errorf("crontab task Init err:%v", err)
- return
- }
-
//鍔犺浇plc鍐欏叆鍦板潃
- plc_address.LoadAddressFromFile()
+ //plc_address.LoadAddressFromFile()
// 鍚姩鏁版嵁鍚屾
var serfStartChan = make(chan bool)
+
// 闇�瑕佸悓姝ョ殑琛�
var syncTables = []string{
"procedures",
"process_model",
- "production_progress",
"work_order",
+ "task_status_sync",
+ "device",
+ "device_plc",
+ "system_status",
+ "process_model_plc_address",
+ "reports_to_cloud",
+ "report_work",
}
agent := serf.InitAgent("apsClient", syncTables, sqlitex.GetDB())
agent.RegisterClusterEvent(serfClusterEvent)
+
go agent.Serve(serfStartChan)
- <-serfStartChan
+ if !<-serfStartChan {
+ logx.Errorf("serf Init err, exit")
+ return
+ }
+
+ //浠庢枃浠堕噷璇诲彇褰撳墠鐢熶骇璁惧id鑾峰彇璁惧鍒楄〃绗竴涓�
+ err := service.InitCurrentDeviceID(serf.Vasystem.ServerID)
+ if err != nil {
+ logx.Errorf("InitCurrentDeviceID error: %v, exit", err)
+ return
+ }
+
+ go func() {
+ service.ReportsSystemDeviceToCloud(serf.Vasystem.ServerID)
+ }()
// 鍒ゆ柇褰撳墠闆嗙兢鐘舵��
+ logx.Infof("current agent.ClusterStatus:%v", agent.ClusterStatus)
+ log.Println("current agent.ClusterStatus:", agent.ClusterStatus)
+
+ conf.Conf.SerfClusterStatus = 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...")
@@ -67,15 +98,37 @@
}
func serfClusterEvent(stat int) {
+ ChangeClusterStatus(stat)
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)
}
+
+func ChangeClusterStatus(stat int) {
+ switch stat {
+ case serf.EventSlave2Master, serf.EventCreateCluster:
+ conf.Conf.SerfClusterStatus = constvar.SerfClusterStatusMaster
+ case serf.EventLeaveCluster:
+ conf.Conf.SerfClusterStatus = constvar.SerfClusterStatusNull
+ case serf.EventJoinCluster, serf.EventMaster2Slave:
+ conf.Conf.SerfClusterStatus = constvar.SerfClusterStatusSlave
+ }
+}
--
Gitblit v1.8.0